mirror of
				https://gitlab.crans.org/bde/nk20-scripts
				synced 2025-10-30 06:49:50 +01:00 
			
		
		
		
	Refactor the script to extract the mails that are registered to an events mailing list
This commit is contained in:
		
							
								
								
									
										57
									
								
								management/commands/extract_ml_registrations.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								management/commands/extract_ml_registrations.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| # Copyright (C) 2018-2020 by BDE ENS Paris-Saclay | ||||
| # SPDX-License-Identifier: GPL-3.0-or-later | ||||
|  | ||||
| from datetime import date | ||||
|  | ||||
| from django.contrib.auth.models import User | ||||
| from django.core.management import BaseCommand | ||||
| from django.db.models import Q | ||||
| from member.models import Membership, Club | ||||
| from wei.models import WEIClub | ||||
|  | ||||
|  | ||||
| class Command(BaseCommand): | ||||
|     help = "Get mailing list registrations from the last wei. " \ | ||||
|            "Usage: manage.py extract_ml_registrations -t {events,art,sport} -t {fr, en}. " \ | ||||
|            "You can write this into a file with a pipe, then paste the document into your mail manager." | ||||
|  | ||||
|     def add_arguments(self, parser): | ||||
|         parser.add_argument('--type', '-t', choices=["members", "clubs", "events", "art", "sport"], default="members", | ||||
|                             help='Select the type of the mailing list (default members)') | ||||
|         parser.add_argument('--lang', '-l', type=str, choices=['fr', 'en'], default='fr', | ||||
|                             help='Select the registred users of the ML of the given language. Useful only for the ' | ||||
|                                  'events mailing list.') | ||||
|  | ||||
|     def handle(self, *args, **options): | ||||
|         # TODO: Improve the mailing list extraction system, and link it automatically with Mailman. | ||||
|  | ||||
|         if options["type"] == "members": | ||||
|             for membership in Membership.objects.filter( | ||||
|                 club__name="BDE", | ||||
|                 date_start__lte=date.today(), | ||||
|                 date_end__gte=date.today(), | ||||
|             ).all(): | ||||
|                 self.stdout.write(membership.user.email) | ||||
|             return | ||||
|  | ||||
|         if options["type"] == "clubs": | ||||
|             for club in Club.objects.all(): | ||||
|                 self.stdout.write(club.email) | ||||
|             return | ||||
|  | ||||
|         # Get the list of mails that want to be registered to the events mailing list. | ||||
|         # Don't filter to valid members, old members can receive these mails as long as they want. | ||||
|         if options["type"] == "events": | ||||
|             for user in User.objects.filter(profile__ml_events_registration=options["lang"]).all(): | ||||
|                 self.stdout.write(user.email) | ||||
|             return | ||||
|  | ||||
|         if options["type"] == "art": | ||||
|             for user in User.objects.filter(profile__ml_art_registration=True).all(): | ||||
|                 self.stdout.write(user.email) | ||||
|             return | ||||
|  | ||||
|         if options["type"] == "sport": | ||||
|             for user in User.objects.filter(profile__ml_sport_registration=True).all(): | ||||
|                 self.stdout.write(user.email) | ||||
|             return | ||||
		Reference in New Issue
	
	Block a user