From 1771d06fee666d7a6c63dce6af4f815a82ecf70d Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Wed, 1 Dec 2021 10:48:01 +0100 Subject: [PATCH] add multiple periods --- .../commands/teleforma-copy-students.py | 82 ++++++++++--------- 1 file changed, 43 insertions(+), 39 deletions(-) diff --git a/teleforma/management/commands/teleforma-copy-students.py b/teleforma/management/commands/teleforma-copy-students.py index 2016fd39..e5b6a9a2 100644 --- a/teleforma/management/commands/teleforma-copy-students.py +++ b/teleforma/management/commands/teleforma-copy-students.py @@ -28,7 +28,7 @@ class Logger: class Command(BaseCommand): help = "Copy students from one DB to another" - period_name = 'Semestrielle' + periods_name = ['Estivale', 'Semestrielle'] db_from = 'recovery' db_to = 'default' logger = Logger('/var/log/app/student_update_from_recovery-' + period_name + '.log') @@ -142,47 +142,51 @@ class Command(BaseCommand): self.logger.logger.info('END of processing: ' + str(student) + ' ' + student.user.username) def handle(self, *args, **options): - self.period = Period.objects.get(name=self.period_name) - - students_from = Student.objects.using(self.db_from).filter(period=self.period) - students_to = Student.objects.using(self.db_to).filter(period=self.period) - - user_tmp, c = User.objects.using(self.db_to).get_or_create(username='tmp') - - self.logger.logger.info('Number of student in from : ' + str(students_from.count())) - self.logger.logger.info('Number of student in to : ' + str(students_to.count())) - - students_to_email = [] - for student in students_to: - try: - if hasattr(student, 'user'): - if student.user.email: - students_to_email.append(student.user.email) - except: - continue - - new_students = [] - existing_students = [] - - for student in students_from: - # print(student) - if student.trainings.all(): - if hasattr(student, 'user'): - if not student.user.email in students_to_email: - new_students.append(student) - else: - existing_students.append(student) + for period_name in self.periods_name: + + self.period = Period.objects.get(name=period_name) + self.logger.logger.info('================================================================') + self.logger.logger.info('PERIOD: ' + period_name) + + students_from = Student.objects.using(self.db_from).filter(period=self.period) + students_to = Student.objects.using(self.db_to).filter(period=self.period) + + user_tmp, c = User.objects.using(self.db_to).get_or_create(username='tmp') + + self.logger.logger.info('Number of student in from : ' + str(students_from.count())) + self.logger.logger.info('Number of student in to : ' + str(students_to.count())) + + students_to_email = [] + for student in students_to: + try: + if hasattr(student, 'user'): + if student.user.email: + students_to_email.append(student.user.email) + except: + continue + + new_students = [] + existing_students = [] + + for student in students_from: + # print(student) + if student.trainings.all(): + if hasattr(student, 'user'): + if not student.user.email in students_to_email: + new_students.append(student) + else: + existing_students.append(student) - # print('new_students: ', len(new_students)) - # print('existing_students: ', len(existing_students)) + # print('new_students: ', len(new_students)) + # print('existing_students: ', len(existing_students)) - self.logger.logger.info('Number of new students to copy : ' + str(len(new_students)) + '\n') - self.logger.logger.info('Number of new students to update : ' + str(len(existing_students)) + '\n') + self.logger.logger.info('Number of new students to copy : ' + str(len(new_students)) + '\n') + self.logger.logger.info('Number of new students to update : ' + str(len(existing_students)) + '\n') - # for student in new_students: - # self.process_student(student) + # for student in new_students: + # self.process_student(student) - for student in existing_students: - self.process_student(student, new=False) + for student in existing_students: + self.process_student(student, new=False) -- 2.39.5