M +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 +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 => +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 +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',)