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