--- 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', ),
--- 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
--- 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()