from copy import deepcopy
from teleforma.models.crfpa import Profile
from teleforma.forms import get_unique_username
+import datetime
class Logger:
class Command(BaseCommand):
help = "Copy students from one DB to another"
- period_name = 'Annuelle'
+ period_name = 'Estivale'
db_from = 'recovery'
db_to = 'default'
- logger = Logger('/var/log/app/student_import_from_recovery.log')
-
+ logger = Logger('/var/log/app/student_update_from_recovery-' + period_name + '.log')
+ date_limit = datetime.datetime(year=2021, month=8, day=7, hour=6)
def process_student(self, student, new=True):
self.logger.logger.info('----------------------------------------------------------------')
student_to = students_to[0]
if student_to.is_subscribed != student.is_subscribed:
student_to.is_subscribed = student.is_subscribed
- students_to.save()
- student = students_to
+ student_to.save()
+ student = student_to
+ #print(student)
for payment in payments:
date_created = deepcopy(payment.date_created)
- payment.pk = None
- payment.save(using=self.db_to)
- payment.student = student
- payment.save(using=self.db_to)
- self.logger.logger.info('payment added: ' + student.user.username + \
- ', date created:' + str(date_created) + \
- ', value: ' + str(payment.value))
+ if date_created >= date_limit:
+ payment.pk = None
+ payment.save(using=self.db_to)
+ payment.student = student
+ payment.save(using=self.db_to)
+ self.logger.logger.info('payment added: ' + student.user.username + \
+ ', date created:' + str(date_created) + \
+ ', value: ' + str(payment.value))
if new:
for discount in discounts:
discount.save(using=self.db_to)
self.logger.logger.info('discount added: ' + str(discount.value))
+ optional_fees_to = student.optional_fees.all()
+ for optional_fee_to in optional_fees_to:
+ optional_fee_to.delete()
+
for optional_fee in optional_fees:
optional_fee.pk = None
optional_fee.save(using=self.db_to)
optional_fee.save(using=self.db_to)
self.logger.logger.info('optional_fee added: ' + str(optional_fee.value))
+ paybacks_to = student.paybacks.all()
+ for payback_to in paybacks_to:
+ payback_to.delete()
+
for payback in paybacks:
payback.pk = None
payback.save(using=self.db_to)
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 = [student.user.email for student in students_to if (hasattr(student, 'user') and hasattr(student.user, 'email'))]
+ 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 = []