Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions jobs/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down Expand Up @@ -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)
7 changes: 6 additions & 1 deletion pythonjobs/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand All @@ -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):
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down