# HG changeset patch # User Tero Marttila # Date 1373846569 -10800 # Node ID e821a59bf3a7533f1c4b0eb98a44cf3333bebea4 # Parent 8c15ae21309fe831682bfcb9e83bfc8b05173bc1 show published state for url items diff -r 8c15ae21309f -r e821a59bf3a7 qrurls/admin.py --- a/qrurls/admin.py Mon Jul 15 02:43:35 2013 +0300 +++ b/qrurls/admin.py Mon Jul 15 03:02:49 2013 +0300 @@ -31,8 +31,9 @@ class URLItemAdmin (admin.ModelAdmin) : list_display = ( - 'shorturl', 'published', 'get_absolute_url', + 'shorturl', 'get_absolute_url', 'published_state', ) + readonly_fields = ('published_state',) fieldsets = ( ("Publishing", { 'fields': ('shorturl', 'published', ), diff -r 8c15ae21309f -r e821a59bf3a7 qrurls/models.py --- a/qrurls/models.py Mon Jul 15 02:43:35 2013 +0300 +++ b/qrurls/models.py Mon Jul 15 03:02:49 2013 +0300 @@ -2,6 +2,7 @@ from django.core.urlresolvers import reverse import django.utils.http from django.contrib.sites.models import get_current_site +from django.utils import timezone QRCODE_API = 'https://chart.googleapis.com/chart?cht=qr&chs={width}x{height}&chl={url}' @@ -27,6 +28,12 @@ def get_absolute_url (self) : return reverse('shorturl', args=[self.shorturl]) + def get_item (self, now=None) : + if now is None : + now = timezone.now() + + return URLItem.objects.filter(shorturl=self, published__lt=now).order_by('-published')[0] + def __unicode__ (self) : return self.shorturl @@ -43,5 +50,31 @@ def get_absolute_url (self) : return self.url + def published_state (self) : + now = timezone.now() + + publish_date = self.published.strftime("%Y-%m-%d") + + if now > self.published: + td = now - self.published + else : + td = self.published - now + + print now, self.published, td + + days, seconds = td.days, td.seconds + m, s = divmod(seconds, 60) + h, m = divmod(m, 60) + age = "{h}h {m}m {s}s".format(h=h, m=m, s=s) + + if self.published < now and days : + return "Published ({date})".format(date=publish_date) + elif self.published < now : + return "Published ({age})".format(age=age) + elif days : + return "Scheduled ({when})".format(when=publish_date) + else : + return "Scheduled ({age})".format(age=age) + def __unicode__ (self) : return self.url diff -r 8c15ae21309f -r e821a59bf3a7 qrurls/views.py --- a/qrurls/views.py Mon Jul 15 02:43:35 2013 +0300 +++ b/qrurls/views.py Mon Jul 15 03:02:49 2013 +0300 @@ -1,5 +1,4 @@ from django.http import HttpResponse, HttpResponseRedirect, Http404 -from django.utils import timezone from qrurls.models import URL, URLItem @@ -12,8 +11,7 @@ try : # most recent - now = timezone.now() - url_item = URLItem.objects.filter(shorturl=url, published__lt=now).order_by('-published')[0] + url_item = url.get_item() except IndexError : raise Http404()