# HG changeset patch # User Peter Sanchez # Date 1289266684 28800 # Mon Nov 08 17:38:04 2010 -0800 # Node ID 5d32dcf12c5dfaefd96b4e991e41db8b19fd4065 # Parent 40cea7f3f33bf110c4cf1d300cd17ab4ecd90cb7 Added managers. Added admin. Updated models & helpers diff --git a/twittersync/admin.py b/twittersync/admin.py --- a/twittersync/admin.py +++ b/twittersync/admin.py @@ -1,2 +1,28 @@ from django.conf import settings +from django.contrib import admin +from models import TwitterAccount, TwitterStatus + +class TwitterAccountAdmin(admin.ModelAdmin): + list_display = ('screen_name', 'account_url', 'date', 'is_active',) + list_editable = ('is_active',) + fields = ('screen_name', 'is_active',) + + def account_url(self, obj): + return obj.twitter_url + account_url.short_description = 'Twitter URL' + + +class TwitterStatusAdmin(admin.ModelAdmin): + list_display = ('author__screen_name', 'content', 'created_date',) + fields = ('author', 'status_id', 'content', 'created_date', 'date') + readonly_fields = ( + 'author', 'status_id', 'content', 'created_date', 'date', + ) + + def has_add_permission(self, *args, **kw): + return False + + +admin.site.register(TwitterAccount, TwitterAccountAdmin) +admin.site.register(TwitterStatus, TwitterStatusAdmin) diff --git a/twittersync/helpers.py b/twittersync/helpers.py --- a/twittersync/helpers.py +++ b/twittersync/helpers.py @@ -3,7 +3,7 @@ from django.conf import settings from django.http import QueryDict from dateutil.parser import parse -from twittersync.models import TwitterAccount, TwitterStatus +from models import TwitterAccount, TwitterStatus # Switch to AnyJson? try: @@ -15,7 +15,7 @@ from django.utils import simplejson as json -def build_url(account, qdict): +def build_url(qdict): return 'http://api.twitter.com/1/statuses/user_timeline.json?%s' % \ qdict.urlencode() @@ -43,8 +43,7 @@ except TwitterStatus.DoesNotExist: pass - url = self.build_url(qdict) - res = opener.open(url) + res = opener.open(build_url(qdict)) results = json.load(res) for result in results: save_status_update(result) diff --git a/twittersync/managers.py b/twittersync/managers.py new file mode 100644 --- /dev/null +++ b/twittersync/managers.py @@ -0,0 +1,14 @@ +from django.conf import settings +from django.db import models + + +class TwitterAccountManager(models.Manager): + def get_query_set(self): + qs = super(TwitterAccountManager, self).get_query_set() + return qs.filter(is_active=True) + + +class TwitterStatusManager(models.Manager): + def get_query_set(self): + qs = super(TwitterStatusManager, self).get_query_set() + return qs.select_related('author') diff --git a/twittersync/models.py b/twittersync/models.py --- a/twittersync/models.py +++ b/twittersync/models.py @@ -2,6 +2,7 @@ from django.conf import settings from django.db import models from django.utils.translation import ugettext_lazy as _ +from managers import TwitterAccountManager, TwitterStatusManager class TwitterAccount(models.Model): @@ -16,8 +17,14 @@ help_text=_('Mark this account enabled for syncing?'), ) - date = models.DateTimeField(default=datetime.datetime.now) - updated = models.DateTimeField(default=datetime.datetime.now) + date = models.DateTimeField(_('Date Added'), default=datetime.datetime.now) + updated = models.DateTimeField( + _('Last Updated'), + default=datetime.datetime.now, + ) + + objects = models.Manager() + active = TwitterAccountManager() class Meta: ordering = ('screen_name',) @@ -25,7 +32,7 @@ def __unicode__(self): return u'Twitter Account: %s' % self.screen_name - @propery + @property def twitter_url(self): return u'http://twitter.com/%s' % self.screen_name @@ -40,9 +47,11 @@ author = models.ForeignKey(TwitterAccount, related_name='tweets') content = models.CharField(max_length=255) - created_date = models.DateTimeField() + created_date = models.DateTimeField(_('Created At')) date = models.DateTimeField(default=datetime.datetime.now) + objects = TwitterStatusManager() + class Meta: get_latest_by = 'created_date' ordering = ('id',)