123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- 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,
- },
- )
|