qrurls/admin.py
changeset 27 ffcffe3024f1
parent 22 28a72692b749
child 30 d0f56303d8de
--- a/qrurls/admin.py	Wed Aug 14 23:25:29 2013 +0300
+++ b/qrurls/admin.py	Wed Aug 14 23:26:00 2013 +0300
@@ -1,9 +1,46 @@
+import datetime
+
 from django.contrib import admin
+import django.utils.html
+import django.forms.models
+
 from qrurls.models import URL, URLItem
-import django.utils.html
+
+class URLItemFormset (django.forms.models.BaseInlineFormSet) :
+    def __init__ (self, *args, **kwargs) :
+        urlfeed = kwargs.get('instance')
+
+        publishing_date = None
+        publishing_time = datetime.time()
+        
+        if urlfeed :
+            publishing_date = urlfeed.last_item().published.date()
+            publishing_time = urlfeed.publishing_schedule
+        
+        def publishing_schedule (count) :
+            if not publishing_date :
+                # starting today
+                start_date = datetime.date.today()
+                offset = 0
+            else :
+                # starting from the following day
+                start_date = publishing_date
+                offset = 1
+
+            for days in xrange(offset, count + offset) :
+                yield datetime.datetime.combine(
+                        publishing_date + datetime.timedelta(days=days),
+                        publishing_time
+                )
+
+        kwargs.update(initial=[
+                dict(published=publish) for publish in publishing_schedule(count=5)
+        ])
+        super(URLItemFormset, self).__init__(*args, **kwargs)
 
 class URLItemInline (admin.TabularInline) :
     model = URLItem
+    formset = URLItemFormset
 
 class URLAdmin (admin.ModelAdmin) :
     def qrcode_url (self, obj) :
@@ -37,7 +74,7 @@
     )
     fieldsets = (
         (None, {
-            'fields': ('shorturl', 'active_item', 'upcoming_item')
+            'fields': ('shorturl', 'active_item', 'upcoming_item', 'publishing_schedule')
         }),
         ("QRCode", {
             'fields': ('qrcode_url', 'qrcode_img'),