from datetime import datetime from django.db import models from django.utils.translation import ugettext_lazy as _ from django.contrib.sites.models import Site from django.contrib.auth.models import User from django_extensions.db.models import TimeStampedModel from historical.managers import PublishedManager from newsroom.models import Story, WebEdition try: from adzone.models import Advertiser, BannerAd ADVERTISER_FIELD=models.ForeignKey(Advertiser, blank=True, null=True) ADVERT_FIELD=models.ForeignKey(BannerAd, blank=True, null=True) except: ADVERTISER_FIELD=models.CharField(_('Advertiser'), blank=True, null=True, max_length=140) ADVERT_FIELD=models.ImageField(_('Advertisment'), blank=True, null=True, upload_to='historical/ads/') class PublishModel(TimeStampedModel): published=models.BooleanField(_('Published'), default=False) published_on=models.DateTimeField(_('Published on'), default=datetime.now()) objects = PublishedManager() class Meta: abstract=True class Group(PublishModel): '''Group model. Holds historical objects for organizational purposes.''' title=models.CharField(_('Title'), max_length=140) slug=models.SlugField(_('Slug'), unique=True) graphic=models.ImageField(_('Graphic'), upload_to='historical/group/', blank=True, null=True) description=models.TextField(_('Description'), blank=True, null=True) sites=models.ManyToManyField(Site) template_name = models.CharField(_('template name'), max_length=200, blank=True, help_text=_("Example: 'historical/group/special_history_section.html'. If this isn't provided, the system will use 'historical/group/default.html'.")) created_by=models.ForeignKey(User, editable=False) class Meta: ordering=('title',) verbose_name = _('Group') verbose_name_plural = _('Groups') def __unicode__(self): return u'%s' % (self.title) @models.permalink def get_absolute_url(self): return ('hi-group-detail', None, {'slug': self.slug}) class HistoricArticle(PublishModel): '''Historic Article model. An historic article, belongs to a group and holds a story and an advertiser.''' story=models.ForeignKey(Story) group=models.ForeignKey(Group) edition=models.ForeignKey(WebEdition, blank=True, null=True) description=models.TextField(_('Description'), blank=True, null=True) #advertisment=models.ImageField(_('Ad'), blank=True, null=True, upload_to='historical/ads/') advert=ADVERT_FIELD advertiser=ADVERTISER_FIELD view_count = models.PositiveIntegerField(default=0, editable=False) created_by=models.ForeignKey(User, editable=False) class Meta: ordering=('published_on',) verbose_name = _('Historic article') verbose_name_plural = _('Historic articles') def __unicode__(self): return u'%s' % self.story.web_hed @models.permalink def get_absolute_url(self, site=''): return ('hi-article-detail', (), { 'group_slug': self.group.slug, 'year': self.story.published_on.year, 'month': self.story.published_on.strftime('%b').lower(), 'day': self.story.published_on.day, 'slug': self.story.slug})