From e212c3b24ca05080366ec0e33be85d2821ddf5c5 Mon Sep 17 00:00:00 2001
From: Flavio Tarsetti <flavio.tarsetti@idiap.ch>
Date: Mon, 23 Dec 2019 11:51:17 +0100
Subject: [PATCH] [accounts] refactor invalid users cleanup

---
 .../commands/postpone_users_validation.py     | 60 +++++++++++--------
 1 file changed, 34 insertions(+), 26 deletions(-)

diff --git a/beat/web/accounts/management/commands/postpone_users_validation.py b/beat/web/accounts/management/commands/postpone_users_validation.py
index 3cf31ef23..646ba48d9 100644
--- a/beat/web/accounts/management/commands/postpone_users_validation.py
+++ b/beat/web/accounts/management/commands/postpone_users_validation.py
@@ -75,33 +75,22 @@ class Command(BaseCommand):
         postpone_count = 0
         now = datetime.datetime.now()
 
-        for invalid_profile in invalid_userprofiles_new_users:
-            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()
+        expiration_date_delta_new_users = datetime.timedelta(
+            days=settings.ACCOUNT_ACTIVATION_DAYS
+        )
 
-        for invalid_profile in invalid_userprofiles_waiting_validation:
-            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()
+        expiration_date_delta_waiting_validation = datetime.timedelta(
+            days=settings.ACCOUNT_ACTIVATION_DAYS_FROM_SUPERVISOR
+        )
+
+        count += self.check_invalid_profiles(
+            invalid_userprofiles_new_users, expiration_date_delta_new_users, now
+        )
+        count += self.check_invalid_profiles(
+            invalid_userprofiles_waiting_validation,
+            expiration_date_delta_waiting_validation,
+            now,
+        )
 
         supervisiontracks = SupervisionTrack.objects.all()
         expiration_date_delta = datetime.timedelta(
@@ -140,6 +129,25 @@ class Command(BaseCommand):
             )
         )
 
+    def check_invalid_profiles(self, invalid_profiles_list, expiration_date_delta, now):
+        """
+        Override this method if you want to customize data inputs or
+        """
+        count_updated_users = 0
+        for invalid_profile in invalid_profiles_list:
+            user = invalid_profile.user
+
+            if user.profile.registration_date + expiration_date_delta <= now:
+                count_updated_users += 1
+                user.delete()
+                invalid_profile.delete()
+                SupervisionTrack.objects.filter(
+                    supervision_key=invalid_profile.supervision_key
+                ).delete()
+                RegistrationProfile.objects.filter(user=invalid_profile.user).delete()
+
+        return count_updated_users
+
     def get_input_data(self, message, default=None):
         """
         Override this method if you want to customize data inputs or
-- 
GitLab