tie in URLImage to URLItem
authorTero Marttila <terom@fixme.fi>
Thu, 15 Aug 2013 00:17:01 +0300
changeset 32 82eae853e240
parent 31 4f37d3b31dad
child 33 b714115da724
tie in URLImage to URLItem
cmpuqrct/urls.py
qrurls/admin.py
qrurls/migrations/0005_auto__add_field_urlitem_image.py
qrurls/models.py
--- a/cmpuqrct/urls.py	Wed Aug 14 23:59:57 2013 +0300
+++ b/cmpuqrct/urls.py	Thu Aug 15 00:17:01 2013 +0300
@@ -11,7 +11,7 @@
     # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
     url(r'^admin/', include(admin.site.urls)),
     url(r'^admin$', include(admin.site.urls)),
-    
+
     # Default.
     url(r'^', include(qrurls.urls.urlpatterns)),
 )
--- a/qrurls/admin.py	Wed Aug 14 23:59:57 2013 +0300
+++ b/qrurls/admin.py	Thu Aug 15 00:17:01 2013 +0300
@@ -13,7 +13,7 @@
         publishing_date = None
         publishing_time = datetime.time()
         
-        if urlfeed :
+        if urlfeed and isinstance(urlfeed, URL) :
             publishing_date = urlfeed.last_item().published.date()
             publishing_time = urlfeed.publishing_schedule
         
@@ -29,7 +29,7 @@
 
             for days in xrange(offset, count + offset) :
                 yield datetime.datetime.combine(
-                        publishing_date + datetime.timedelta(days=days),
+                        start_date + datetime.timedelta(days=days),
                         publishing_time
                 )
 
@@ -92,9 +92,10 @@
             'fields': ('shorturl', 'published', ),
         }),
         ("Target", {
-            'fields': ('url', ),
+            'fields': ('url', 'image'),
         }),
     )
+    
 
 class URLImageAdmin (admin.ModelAdmin) :
     # hide the "uploaded" field
@@ -103,7 +104,9 @@
         'uploaded',
         'image',
     )
+    
+    inlines = (URLItemInline, )
 
 admin.site.register(URL, URLAdmin)
 admin.site.register(URLItem, URLItemAdmin)
-admin.site.register(URLImage)
+admin.site.register(URLImage, URLImageAdmin)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qrurls/migrations/0005_auto__add_field_urlitem_image.py	Thu Aug 15 00:17:01 2013 +0300
@@ -0,0 +1,45 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Adding field 'URLItem.image'
+        db.add_column(u'qrurls_urlitem', 'image',
+                      self.gf('django.db.models.fields.related.ForeignKey')(to=orm['qrurls.URLImage'], null=True, blank=True),
+                      keep_default=False)
+
+
+    def backwards(self, orm):
+        # Deleting field 'URLItem.image'
+        db.delete_column(u'qrurls_urlitem', 'image_id')
+
+
+    models = {
+        u'qrurls.url': {
+            'Meta': {'object_name': 'URL'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'publishing_schedule': ('django.db.models.fields.TimeField', [], {'default': 'datetime.time(0, 0)'}),
+            'shorturl': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+        },
+        u'qrurls.urlimage': {
+            'Meta': {'ordering': "['uploaded']", 'object_name': 'URLImage'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
+            'uploaded': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
+        },
+        u'qrurls.urlitem': {
+            'Meta': {'ordering': "['published']", 'object_name': 'URLItem'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['qrurls.URLImage']", 'null': 'True', 'blank': 'True'}),
+            'published': ('django.db.models.fields.DateTimeField', [], {}),
+            'shorturl': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['qrurls.URL']"}),
+            'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
+        }
+    }
+
+    complete_apps = ['qrurls']
\ No newline at end of file
--- a/qrurls/models.py	Wed Aug 14 23:59:57 2013 +0300
+++ b/qrurls/models.py	Thu Aug 15 00:17:01 2013 +0300
@@ -72,13 +72,19 @@
         verbose_name_plural = u"URL Images"
         ordering = ['uploaded']
 
+    def get_absolute_url (self) :
+        return self.image.url
+
     def __unicode__ (self) :
         return self.image.name
 
 class URLItem(models.Model):
     shorturl = models.ForeignKey(URL)
     published = models.DateTimeField()
-    url = models.URLField()
+
+    # either-or
+    url = models.URLField(blank=True) # populated from image
+    image = models.ForeignKey(URLImage, null=True, blank=True)
     
     class Meta:
         verbose_name = u"URL Item"
@@ -120,3 +126,10 @@
                 published_state=self.published_state(),
                 url=self.get_absolute_url(),
         )
+
+    def save (self, *args, **kwargs) :
+        if self.image :
+            self.url = self.image.get_absolute_url()
+
+        super(URLItem, self).save(*args, **kwargs)
+