3 # Copyright (C) 2013 FinalsClub Foundation
6 from celery import task
7 from celery.utils.log import get_task_logger
8 from karmaworld.apps.notes.models import Note
12 logger = get_task_logger(__name__)
14 @task(name="tweet_note")
16 """Tweet about a new note."""
19 import karmaworld.secret.twitter as secrets
21 logger.warn("No twitter secrets found, not running tweet_note")
25 api = twitter.Api(consumer_key=secrets.CONSUMER_KEY,
26 consumer_secret=secrets.CONSUMER_SECRET,
27 access_token_key=secrets.ACCESS_TOKEN_KEY,
28 access_token_secret=secrets.ACCESS_TOKEN_SECRET)
30 newest_notes = Note.objects.all().order_by('-uploaded_at')[:100]
31 for n in newest_notes:
33 update = tweet_string(n)
34 logger.info("Tweeting: " + update)
36 # Mark this tweeted before we actually tweet it
37 # to be extra safe against double tweets
41 api.PostUpdate(tweet_string(n))
45 logger.error(traceback.format_exc())
48 def tweet_string(note):
49 # This url will use 13 or less characters
50 shortener = gdshortener.ISGDShortener()
51 url = "http://www.karmanotes.org" + \
52 note.get_absolute_url()
53 short_url = shortener.shorten(url)[0]
56 short_course = note.course.name[:50]
59 short_note = note.name[:57]
61 if note.course.school:
62 school = note.course.school
64 school = note.course.department.school
67 return short_url + " #" + school.hashtag + " " + \
68 short_course + ": " + \
71 return short_url + " " + \
72 short_course + ": " + \