From cd7b0b2d3225666fdc1c4d543b53bd4414aed9be Mon Sep 17 00:00:00 2001 From: Flavio Tarsetti <flavio.tarsetti@idiap.ch> Date: Fri, 20 Dec 2019 12:10:30 +0100 Subject: [PATCH] [accounts] code refactoring on validation postpone command --- .../commands/postpone_users_validation.py | 110 +++++++++--------- 1 file changed, 52 insertions(+), 58 deletions(-) diff --git a/beat/web/accounts/management/commands/postpone_users_validation.py b/beat/web/accounts/management/commands/postpone_users_validation.py index 791bc4c60..20ce92217 100644 --- a/beat/web/accounts/management/commands/postpone_users_validation.py +++ b/beat/web/accounts/management/commands/postpone_users_validation.py @@ -52,7 +52,6 @@ class Command(BaseCommand): def handle(self, *args, **options): - clean = True if options['interactive']: try: @@ -63,63 +62,58 @@ class Command(BaseCommand): if answer != 'y': self.stdout.write('Postpone canceled') - sys.exit(1) - - if clean: - invalid_userprofiles_new_users = Profile.objects.filter(status=Profile.NEWUSER) - invalid_userprofiles_waiting_validation = Profile.objects.filter(status=Profile.WAITINGVALIDATION) - count = 0 - postpone_count = 0 - now = datetime.datetime.now() - - for invalid_profile in invalid_userprofiles_new_users: - user = invalid_profile.user - supervisiontracks = SupervisionTrack.objects.filter(supervision_key=invalid_profile.supervision_key) - registration_profiles = RegistrationProfile.objects.filter(user=invalid_profile.user) - - expiration_date_delta = datetime.timedelta(days=settings.ACCOUNT_ACTIVATION_DAYS) - if user.profile.registration_date + expiration_date_delta <= now: - count += 1 - user.delete() - invalid_profile.delete() - for _track in supervisiontracks: - _track.delete() - for _profile in registration_profiles: - _profile.delete() - - for invalid_profile in invalid_userprofiles_waiting_validation: - user = invalid_profile.user - supervisiontracks = SupervisionTrack.objects.filter(supervision_key=invalid_profile.supervision_key) - registration_profiles = RegistrationProfile.objects.filter(user=invalid_profile.user) - - expiration_date_delta = datetime.timedelta(days=settings.ACCOUNT_ACTIVATION_DAYS_FROM_SUPERVISOR) - if user.profile.registration_date + expiration_date_delta <= now: - count += 1 - user.delete() - invalid_profile.delete() - for _track in supervisiontracks: - _track.delete() - for _profile in registration_profiles: - _profile.delete() - - - supervisiontracks = SupervisionTrack.objects.all() - for supervisiontrack in supervisiontracks: - expiration_date_delta = datetime.timedelta(days=settings.ACCOUNT_BLOCKAGE_AFTER_FIRST_REJECTION_DAYS) - if supervisiontrack.is_valid and supervisiontrack.expiration_date < now + expiration_date_delta: - postpone_count += 1 - extra_days_delta = datetime.timedelta(days=(settings.ACCOUNT_BLOCKAGE_AFTER_FIRST_REJECTION_DAYS + 1)) - postpone_date = now + extra_days_delta - supervisiontrack.expiration_date = postpone_date - supervisiontrack.save() - supervisee_profile = Profile.objects.get(user=supervisiontrack.supervisee) - if supervisee_profile.status == Profile.YEARREVALIDATION: - supervisee_profile.status = Profile.ACCEPTED - supervisee_profile.save() - - - self.stdout.write('{} Invalid user(s) successfully cleaned/'.format(count) + '{} Total user(s) checked'.format(invalid_userprofiles_new_users.count()+invalid_userprofiles_waiting_validation.count())) - self.stdout.write('{} Valid user(s) postponed/'.format(postpone_count) + '{} Total supervision track(s) checked'.format(supervisiontracks.count())) + sys.exit(0) + + invalid_userprofiles_new_users = Profile.objects.filter(status=Profile.NEWUSER) + invalid_userprofiles_waiting_validation = Profile.objects.filter(status=Profile.WAITINGVALIDATION) + count = 0 + postpone_count = 0 + now = datetime.datetime.now() + + for invalid_profile in invalid_userprofiles_new_users: + user = invalid_profile.user + supervisiontracks = SupervisionTrack.objects.filter(supervision_key=invalid_profile.supervision_key) + registration_profiles = RegistrationProfile.objects.filter(user=invalid_profile.user) + + expiration_date_delta = datetime.timedelta(days=settings.ACCOUNT_ACTIVATION_DAYS) + if user.profile.registration_date + expiration_date_delta <= now: + count += 1 + user.delete() + invalid_profile.delete() + SupervisionTrack.objects.filter(supervision_key=invalid_profile.supervision_key).delete() + RegistrationProfile.objects.filter(user=invalid_profile.user).delete() + + for invalid_profile in invalid_userprofiles_waiting_validation: + user = invalid_profile.user + supervisiontracks = SupervisionTrack.objects.filter(supervision_key=invalid_profile.supervision_key) + registration_profiles = RegistrationProfile.objects.filter(user=invalid_profile.user) + + expiration_date_delta = datetime.timedelta(days=settings.ACCOUNT_ACTIVATION_DAYS_FROM_SUPERVISOR) + if user.profile.registration_date + expiration_date_delta <= now: + count += 1 + user.delete() + invalid_profile.delete() + SupervisionTrack.objects.filter(supervision_key=invalid_profile.supervision_key).delete() + RegistrationProfile.objects.filter(user=invalid_profile.user).delete() + + supervisiontracks = SupervisionTrack.objects.all() + expiration_date_delta = datetime.timedelta(days=settings.ACCOUNT_BLOCKAGE_AFTER_FIRST_REJECTION_DAYS) + extra_days_delta = datetime.timedelta(days=(settings.ACCOUNT_BLOCKAGE_AFTER_FIRST_REJECTION_DAYS + 1)) + + for supervisiontrack in supervisiontracks: + if supervisiontrack.is_valid and supervisiontrack.expiration_date < now + expiration_date_delta: + postpone_count += 1 + postpone_date = now + extra_days_delta + supervisiontrack.expiration_date = postpone_date + supervisiontrack.save() + supervisee_profile = Profile.objects.get(user=supervisiontrack.supervisee) + if supervisee_profile.status == Profile.YEARREVALIDATION: + supervisee_profile.status = Profile.ACCEPTED + supervisee_profile.save() + + + self.stdout.write('{} Invalid user(s) successfully cleaned/{} Total user(s) checked'.format(count, invalid_userprofiles_new_users.count()+invalid_userprofiles_waiting_validation.count())) + self.stdout.write('{} Valid user(s) postponed/{} Total supervision track(s) checked'.format(postpone_count, supervisiontracks.count())) def get_input_data(self, message, default=None): -- GitLab