diff gpp/banners/models.py @ 558:9a68fd3bd8a5

Creating a simple banner / ad campaign application, initially as a RFB / SG101 tie-in.
author Brian Neal <bgneal@gmail.com>
date Thu, 02 Feb 2012 18:56:48 -0600
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gpp/banners/models.py	Thu Feb 02 18:56:48 2012 -0600
@@ -0,0 +1,60 @@
+"""
+Models for the banners application.
+
+"""
+import datetime
+
+from django.db import models
+
+
+class Campaign(models.Model):
+    """
+    A model to represent an ad or banner campaign.
+
+    """
+    name = models.CharField(max_length=128)
+    slug = models.SlugField()
+    creation_date = models.DateTimeField(blank=True)
+
+    def __unicode__(self):
+        return self.name
+
+    class Meta:
+        ordering = ['name']
+
+    def save(self, *args, **kwargs):
+        if not self.pk and not self.creation_date:
+            self.creation_date = datetime.datetime.now()
+
+        super(Campaign, self).save(*args, **kwargs)
+
+
+def banner_upload_to(instance, filename):
+    """
+    An "upload_to" function for the Banner model.
+
+    """
+    return "banners/%s/%s" % (instance.campaign.slug, filename)
+
+
+class Banner(models.Model):
+    """
+    A model to represent a banner.
+
+    """
+    campaign = models.ForeignKey(Campaign)
+    image = models.ImageField(upload_to=banner_upload_to)
+    description = models.CharField(max_length=128)
+    creation_date = models.DateTimeField(blank=True)
+
+    def __unicode__(self):
+        return self.description
+
+    class Meta:
+        ordering = ['-creation_date']
+
+    def save(self, *args, **kwargs):
+        if not self.pk and not self.creation_date:
+            self.creation_date = datetime.datetime.now()
+
+        super(Banner, self).save(*args, **kwargs)