]> git.parisson.com Git - teleforma.git/commitdiff
add multiple periods
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 1 Dec 2021 09:48:01 +0000 (10:48 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 1 Dec 2021 09:48:01 +0000 (10:48 +0100)
teleforma/management/commands/teleforma-copy-students.py

index 2016fd39e0d26910b3b35f9ca07979e982405826..e5b6a9a228a4be031e4d1f87a462b68c7a92f3fe 100644 (file)
@@ -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)