5d32dcf12c5d — Peter Sanchez 13 years ago
Added managers. Added admin. Updated models & helpers
4 files changed, 56 insertions(+), 8 deletions(-)

M twittersync/admin.py
M twittersync/helpers.py
A => twittersync/managers.py
M twittersync/models.py
M twittersync/admin.py +26 -0
@@ 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)

          
M twittersync/helpers.py +3 -4
@@ 3,7 3,7 @@ import datetime
 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 @@ except ImportError:
         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 @@ def sync_twitter_account(account):
     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)

          
A => twittersync/managers.py +14 -0
@@ 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')

          
M twittersync/models.py +13 -4
@@ 2,6 2,7 @@ import datetime
 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 @@ class TwitterAccount(models.Model):
         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 @@ class TwitterAccount(models.Model):
     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 @@ class TwitterStatus(models.Model):
     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',)