view banners/models.py @ 1157:e4f2d6a4b401

Rework S3 connection logic for latest versions of Python 2.7. Had to make these changes for Ubuntu 16.04. Seems backward compatible with production.
author Brian Neal <bgneal@gmail.com>
date Thu, 19 Jan 2017 18:35:53 -0600
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)