From 0c8d84947de22c6bb0a1206cf71b13b79cf7d76e Mon Sep 17 00:00:00 2001 From: Siarhei Puhach Date: Tue, 22 Oct 2019 17:41:00 +0300 Subject: [PATCH 1/2] Moved generate token logic --- jobs/models.py | 19 ++++++++++--------- pythonjobs/services.py | 7 ++++++- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/jobs/models.py b/jobs/models.py index 220f1d9..e5ab0ff 100644 --- a/jobs/models.py +++ b/jobs/models.py @@ -6,7 +6,6 @@ from django.utils.text import slugify from django.core.urlresolvers import reverse from django.conf import settings -from pythonjobs.services import generate_token, send_confirmation_mail from jobs.tasks import tweet @@ -62,19 +61,21 @@ def get_actives(now=timezone.now()): def token_pre_save(signal, instance, sender, **kwargs): - if not instance.token or Job.objects.filter(token=instance.token).exclude(id=instance.id): - token = generate_token() - while Job.objects.filter(token=token): - token = generate_token() - instance.token = token + if not instance.token or Job.objects.filter(token=instance.token).exclude(id=instance.id).exists(): + from pythonjobs.services import generate_token # avoid circular dependencies + instance.token = generate_token() instance.status = 1 def mail_post_save(signal, instance, sender, created, **kwargs): - if created and settings.DEBUG == False: + if created and not settings.DEBUG: + from pythonjobs.services import send_confirmation_mail # avoid circular dependencies send_confirmation_mail(instance) - tweet.apply_async(args=(instance.get_absolute_url(),), - countdown=10, serializer='json') + tweet.apply_async( + args=(instance.get_absolute_url(),), + countdown=10, + serializer='json', + ) signals.pre_save.connect(token_pre_save, sender=Job) signals.post_save.connect(mail_post_save, sender=Job) diff --git a/pythonjobs/services.py b/pythonjobs/services.py index 1e68750..b39005f 100644 --- a/pythonjobs/services.py +++ b/pythonjobs/services.py @@ -3,6 +3,8 @@ from django.core.mail import send_mail from django.template import loader import tweepy + +from jobs.models import Job from pythonjobs import settings @@ -24,7 +26,10 @@ def tweet(self, message): def generate_token(length=60): chars = string.ascii_uppercase + string.digits - return ''.join(random.choice(chars) for _ in range(length)) + token = ''.join(random.choice(chars) for _ in range(length)) + while Job.objects.filter(token=token).exists(): + token = generate_token() + return token def send_confirmation_mail(job): From 3a29dfb92fb917b63594f5f251a873697b5d67ea Mon Sep 17 00:00:00 2001 From: Siarhei Puhach Date: Wed, 23 Oct 2019 09:41:24 +0300 Subject: [PATCH 2/2] Changed requirements --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ad1b8f7..ca7dd4e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ dj-database-url==0.3.0 Django==1.8.4 django-toolbelt==0.0.1 gunicorn==19.3.0 -psycopg2==2.6 +psycopg2==2.7.7 static3==0.6.1 whitenoise==2.0.2 model-mommy==1.2.5