annotate banners/models.py @ 973:6f55c086db1e
Guess file extension based on content-type.
When downloading a file, and no path is supplied to store it, guess the file
extension using mimetypes and the content-type header.
Also supply a unit test for the HotLinkImageForm.
author |
Brian Neal <bgneal@gmail.com> |
date |
Thu, 01 Oct 2015 19:44:45 -0500 |
parents |
ee87ea74d46b |
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)
|