annotate gpp/banners/models.py @ 569:3fe2eced1be7
Now developing on Ubuntu 12.04 with Python 2.7.
Use symbolic links for media, so add media/banners to .hgignore.
I had a syntax error in banner_tags.py that only Python 2.7 caught.
For local development, read database name from SECRETS.
author |
Brian Neal <bgneal@gmail.com> |
date |
Sun, 29 Apr 2012 16:00:01 -0500 |
parents |
9a68fd3bd8a5 |
children |
|
rev |
line source |
bgneal@558
|
1 """
|
bgneal@558
|
2 Models for the banners application.
|
bgneal@558
|
3
|
bgneal@558
|
4 """
|
bgneal@558
|
5 import datetime
|
bgneal@558
|
6
|
bgneal@558
|
7 from django.db import models
|
bgneal@558
|
8
|
bgneal@558
|
9
|
bgneal@558
|
10 class Campaign(models.Model):
|
bgneal@558
|
11 """
|
bgneal@558
|
12 A model to represent an ad or banner campaign.
|
bgneal@558
|
13
|
bgneal@558
|
14 """
|
bgneal@558
|
15 name = models.CharField(max_length=128)
|
bgneal@558
|
16 slug = models.SlugField()
|
bgneal@558
|
17 creation_date = models.DateTimeField(blank=True)
|
bgneal@558
|
18
|
bgneal@558
|
19 def __unicode__(self):
|
bgneal@558
|
20 return self.name
|
bgneal@558
|
21
|
bgneal@558
|
22 class Meta:
|
bgneal@558
|
23 ordering = ['name']
|
bgneal@558
|
24
|
bgneal@558
|
25 def save(self, *args, **kwargs):
|
bgneal@558
|
26 if not self.pk and not self.creation_date:
|
bgneal@558
|
27 self.creation_date = datetime.datetime.now()
|
bgneal@558
|
28
|
bgneal@558
|
29 super(Campaign, self).save(*args, **kwargs)
|
bgneal@558
|
30
|
bgneal@558
|
31
|
bgneal@558
|
32 def banner_upload_to(instance, filename):
|
bgneal@558
|
33 """
|
bgneal@558
|
34 An "upload_to" function for the Banner model.
|
bgneal@558
|
35
|
bgneal@558
|
36 """
|
bgneal@558
|
37 return "banners/%s/%s" % (instance.campaign.slug, filename)
|
bgneal@558
|
38
|
bgneal@558
|
39
|
bgneal@558
|
40 class Banner(models.Model):
|
bgneal@558
|
41 """
|
bgneal@558
|
42 A model to represent a banner.
|
bgneal@558
|
43
|
bgneal@558
|
44 """
|
bgneal@558
|
45 campaign = models.ForeignKey(Campaign)
|
bgneal@558
|
46 image = models.ImageField(upload_to=banner_upload_to)
|
bgneal@558
|
47 description = models.CharField(max_length=128)
|
bgneal@558
|
48 creation_date = models.DateTimeField(blank=True)
|
bgneal@558
|
49
|
bgneal@558
|
50 def __unicode__(self):
|
bgneal@558
|
51 return self.description
|
bgneal@558
|
52
|
bgneal@558
|
53 class Meta:
|
bgneal@558
|
54 ordering = ['-creation_date']
|
bgneal@558
|
55
|
bgneal@558
|
56 def save(self, *args, **kwargs):
|
bgneal@558
|
57 if not self.pk and not self.creation_date:
|
bgneal@558
|
58 self.creation_date = datetime.datetime.now()
|
bgneal@558
|
59
|
bgneal@558
|
60 super(Banner, self).save(*args, **kwargs)
|