view banners/models.py @ 791:0ca691cccf8d

Utilize select_related() for user & user profiles. This commit also removes the caching of the avatar URL in the avatar template tag. This is because we are now using select_related, so we already have the profile & avatar when we get to the tag. Thus we don't need to waste time querying the cache. Removed an apparently unused member map template as well.
author Brian Neal <bgneal@gmail.com>
date Fri, 23 May 2014 21:52:41 -0500
parents ee87ea74d46b
children
line wrap: on
line source
"""
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)