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')
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)