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