From d3c7109b647a869449ea3d7438cd42030c15dd42 Mon Sep 17 00:00:00 2001
From: Flavio Tarsetti <flavio.tarsetti@idiap.ch>
Date: Tue, 12 May 2020 18:35:41 +0200
Subject: [PATCH] [accounts][models] create a model manager TemporaryUrlManager

---
 beat/web/accounts/models.py | 38 +++++++++++++++++++++----------------
 1 file changed, 22 insertions(+), 16 deletions(-)

diff --git a/beat/web/accounts/models.py b/beat/web/accounts/models.py
index 500597da2..d8821bec4 100644
--- a/beat/web/accounts/models.py
+++ b/beat/web/accounts/models.py
@@ -153,6 +153,27 @@ def save_user_profile(sender, instance, **kwargs):
     instance.profile.save()
 
 
+class TemporaryUrlManager(models.Manager):
+    def create_temporary_url(self, status, supervision_track):
+        # Actions that result creating the object
+
+        # url_hash creation
+        length = 32
+        url_hash = "".join(
+            random.choice(string.ascii_letters + string.digits)  # nosec
+            for _ in range(length)
+        )
+        now = datetime.datetime.now()
+        expiration_date_delta = datetime.timedelta(days=settings.ACCOUNT_ACTIVATION_DAYS_FROM_SUPERVISOR)
+        expires = now + expiration_date_delta
+
+        temporary_url = self.model(status=status,
+                                   url_hash=url_hash,
+                                   expires=expires,
+                                   supervision_track=supervision_track)
+        temporary_url.save()
+        return temporary_url
+
 class TemporaryUrl(models.Model):
     # _____ Constants __________
 
@@ -175,19 +196,4 @@ class TemporaryUrl(models.Model):
         SupervisionTrack, on_delete=models.CASCADE, related_name="supervisees"
     )
 
-    def _generate_temporary_url(self, status, supervision_track):
-        # Actions that result creating the object
-
-        # url_hash creation
-        length = 32
-        url_hash = "".join(
-            random.choice(string.ascii_letters + string.digits)  # nosec
-            for _ in range(length)
-        )
-        self.url_hash = url_hash
-        now = datetime.datetime.now()
-        expiration_date_delta = datetime.timedelta(days=settings.ACCOUNT_ACTIVATION_DAYS_FROM_SUPERVISOR)
-        self.expires = now + expiration_date_delta
-        self.status = status
-        self.supervision_track = supervision_track
-        self.save()
+    objects = TemporaryUrlManager()
-- 
GitLab