1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 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})
|