From ed258069fd19b623a99fbbe451e0623ecb82978d Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Tue, 2 Mar 2010 23:08:19 +0000 Subject: [PATCH] Abstract out update command instead of being embedded in save, added cron --- reddit/cron.py | 27 +++++++++++++++++++++++++++ reddit/models.py | 4 +--- sso/views.py | 1 + 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 reddit/cron.py diff --git a/reddit/cron.py b/reddit/cron.py new file mode 100644 index 0000000..f86a213 --- /dev/null +++ b/reddit/cron.py @@ -0,0 +1,27 @@ +import time +import logging + +from django_cron import cronScheduler, Job +from reddit.models import RedditAccount + +class UpdateAPIs(Job): + """ + Updates all Reddit API elements in the database + """ + + # run every 24 hours + run_every = 86400 + + @property + def _logger(self): + if not hasattr(self, '__logger'): + self.__logger = logging.getLogger(__name__) + return self.__logger + + def job(self): + for acc in RedditAccount.objects.all(): + acc.api_update() + acc.save() + time.sleep(2) + +cronScheduler.register(UpdateAPIs) diff --git a/reddit/models.py b/reddit/models.py index b4f7435..2b89402 100644 --- a/reddit/models.py +++ b/reddit/models.py @@ -21,7 +21,7 @@ class RedditAccount(models.Model): last_update = models.DateTimeField("Last Update from API", blank=False) - def save(self): + def api_update(self): try: jsondoc = json.load(urllib.urlopen("http://reddit.com/user/%s/about.json" % self.username)) except: @@ -35,8 +35,6 @@ class RedditAccount(models.Model): self.date_created = datetime.fromtimestamp(data['created_utc']) self.last_update = datetime.now() - - return models.Model.save(self) class Meta: app_label = 'reddit' diff --git a/sso/views.py b/sso/views.py index cde286f..0b5ae80 100644 --- a/sso/views.py +++ b/sso/views.py @@ -135,6 +135,7 @@ def reddit_add(request): acc.user = request.user acc.username = form.cleaned_data['username'] + acc.api_update() acc.save() return HttpResponseRedirect(reverse('sso.views.profile')) # Redirect after POST