mirror of
				https://gitlab.crans.org/bde/nk20-scripts
				synced 2025-10-30 22:59:52 +01:00 
			
		
		
		
	Merge branch 'merge_club' into 'master'
add script for notify club about their food See merge request bde/nk20-scripts!12
This commit is contained in:
		
							
								
								
									
										41
									
								
								management/commands/send_mail_for_food.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								management/commands/send_mail_for_food.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | |||||||
|  | # Copyright (C) 2018-2021 by BDE ENS Paris-Saclay | ||||||
|  | # SPDX-License-Identifier: GPL-3.0-or-later | ||||||
|  |  | ||||||
|  | from datetime import date, timedelta | ||||||
|  |  | ||||||
|  | from django.core.mail import send_mail | ||||||
|  | from django.core.management import BaseCommand | ||||||
|  | from django.template.loader import render_to_string | ||||||
|  | from django.utils.translation import activate | ||||||
|  | from food.models import Food | ||||||
|  | from member.models import Club | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Command(BaseCommand): | ||||||
|  |     def add_arguments(self, parser): | ||||||
|  |         parser.add_argument("--report", "-r", action='store_true', help="Report the list of food to GCKs") | ||||||
|  |         parser.add_argument("--club", "-c", action='store_true', help="Report the list of food to club") | ||||||
|  |  | ||||||
|  |     def handle(self, *args, **options): | ||||||
|  |         activate('fr') | ||||||
|  |          | ||||||
|  |         foods = Food.objects.filter(end_of_life='').order_by('expiry_date').distinct().all() | ||||||
|  |  | ||||||
|  |         if options["report"]: | ||||||
|  |             plain_text = render_to_string("scripts/food_report.txt", context=dict(foods=foods)) | ||||||
|  |             html = render_to_string("scripts/food_report.html", context=dict(foods=foods)) | ||||||
|  |             send_mail("[Note Kfet] Liste de la nourriture à la Kfet", plain_text, "Note Kfet 2020 <notekfet2020@crans.org>", | ||||||
|  |                       recipient_list=["respo-info.bde@lists.crans.org", "gck.bde@lists.crans.org"], | ||||||
|  |                       html_message=html) | ||||||
|  |  | ||||||
|  |         if options["club"]: | ||||||
|  |             for club in Club.objects.all(): | ||||||
|  |                 if Food.objects.filter(end_of_life='', owner=club).count() > 0: | ||||||
|  |                     plain_text = render_to_string("scripts/food_report.txt", | ||||||
|  |                                                   context=dict(foods=foods.filter(owner=club))) | ||||||
|  |                     html = render_to_string("scripts/food_report.html", | ||||||
|  |                                             context=dict(foods=foods.filter(owner=club))) | ||||||
|  |                     send_mail("[Note Kfet] Liste de la nourriture de votre club", plain_text, "Note Kfet 2020 <notekfet2020@crans.org>", | ||||||
|  |                               recipient_list=[club.email], | ||||||
|  |                               html_message=html) | ||||||
|  |  | ||||||
							
								
								
									
										51
									
								
								templates/scripts/food_report.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								templates/scripts/food_report.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | {% load i18n %} | ||||||
|  | {% now "Y-m-d" as today %} | ||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="fr"> | ||||||
|  | <head> | ||||||
|  |     <meta charset="UTF-8"> | ||||||
|  |     <title>[Note Kfet] Liste de la bouffe</title> | ||||||
|  | </head> | ||||||
|  | <body> | ||||||
|  | <table> | ||||||
|  | <thead> | ||||||
|  | <tr> | ||||||
|  |     <th>Club</th> | ||||||
|  |     <th>Nom</th> | ||||||
|  |     <th>Date de péremption</th> | ||||||
|  |     <th>DLC/DDM</th> | ||||||
|  |     <th>Consigne pour les GCKs</th> | ||||||
|  | </tr> | ||||||
|  | </thead> | ||||||
|  | <tbody> | ||||||
|  |     {% for food in foods %} | ||||||
|  |     {% if today > food.expiry_date|date:"Y-m-d" %} | ||||||
|  | 	    {% if food.date_type and food.date_type == "DLC" %} | ||||||
|  | 		<tr bgcolor="red"> | ||||||
|  | 	    {% else %} | ||||||
|  | 	        <tr bgcolor="yellow"> | ||||||
|  | 	    {% endif %} | ||||||
|  | 	{% else %} | ||||||
|  | 	    <tr> | ||||||
|  | 	{% endif %} | ||||||
|  |             <td>{{ food.owner.name }}</td> | ||||||
|  |             <td>{{ food.name }}</td> | ||||||
|  |             <td>{{ food.expiry_date }}</td> | ||||||
|  | 	    {% if food.date_type %} | ||||||
|  | 	        <td>{{ food.date_type }}</td> | ||||||
|  | 	    {% else %} | ||||||
|  |             	<td>--</td> | ||||||
|  | 	    {% endif %} | ||||||
|  |             <td>{{ food.order }}</td> | ||||||
|  |         </tr> | ||||||
|  |     {% endfor %} | ||||||
|  | </tbody> | ||||||
|  | </table> | ||||||
|  |  | ||||||
|  | -- | ||||||
|  | <p> | ||||||
|  |     Les GCKs du BDE<br> | ||||||
|  |     {% trans "Mail generated by the Note Kfet on the" %} {% now "j F Y à H:i:s" %} | ||||||
|  | </p> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
							
								
								
									
										14
									
								
								templates/scripts/food_report.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								templates/scripts/food_report.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | {% load i18n %} | ||||||
|  |  | ||||||
|  |    Propriétaire   |         Nom         |  Date de péremption  | DLC/DDM |        Consigne pour les GCKs        | | ||||||
|  | ------------------+---------------------+----------------------+---------+--------------------------------------- | ||||||
|  | {% for food in foods %} | ||||||
|  |  | ||||||
|  | {{ food.owner.name }} | {{ food.name }} | {{ food.expiry_date }} | {% if food.date_type %}{{ food.date_type }}{% else %} -- {% endif %} | {{ food.order }} | ||||||
|  |  | ||||||
|  | {% endfor %} | ||||||
|  |  | ||||||
|  | -- | ||||||
|  | Les GCKs du BDE | ||||||
|  |  | ||||||
|  | {% trans "Mail generated by the Note Kfet on the" %} {% now "j F Y à H:i:s" %} | ||||||
		Reference in New Issue
	
	Block a user