示例#1
0
class Post(models.Model):
    title = models.CharField(max_length=100, db_index=True)
    category = models.ForeignKey(Category)
    slug = models.SlugField(max_length=100, unique_for_date='date')
    date = models.DateTimeField(default=timezone.now, db_index=True)
    date_url = models.DateField(db_index=True, editable=False)
    image = AssetForeignKey('assets.Image', null=True, blank=True)
    teaser = models.TextField(blank=True)
    content = models.TextField()
    published = models.BooleanField(
        default=True,
        db_index=True,
        help_text='Post will be hidden unless this option is selected')

    class Meta:
        get_latest_by = 'date'
        ordering = ('-date', )

    def __str__(self):
        return self.title

    @models.permalink
    def get_absolute_url(self):
        return ('news:post-detail', (), {
            'year': self.date_url.year,
            'month': str(self.date_url.month).zfill(2),
            'day': str(self.date_url.day).zfill(2),
            'slug': self.slug,
        })

    def save(self, *args, **kwargs):
        self.date_url = self.date.date()
        super(Post, self).save(*args, **kwargs)
示例#2
0
class Page(MPTTModel):
    url = models.CharField(
        'URL',
        max_length=100,
        unique=True,
        help_text=
        "Example: '/about/contact/'. Make sure to have leading and trailing slashes.",
        validators=[url_validator, slash_validator])
    title = models.CharField(max_length=200)
    parent = TreeForeignKey('self',
                            null=True,
                            blank=True,
                            related_name='children',
                            on_delete=models.CASCADE)
    show_in_navigation = models.BooleanField(default=True, db_index=True)
    hero_image = AssetForeignKey('assets.Image',
                                 blank=True,
                                 null=True,
                                 on_delete=models.SET_NULL)
    content = models.TextField(blank=True)
    template_name = models.CharField(max_length=100, blank=True)
    published = models.BooleanField(default=True, db_index=True)
    login_required = models.BooleanField(default=False, db_index=True)

    objects = TreeManager()

    def __str__(self):
        return '%s -- %s' % (self.url, self.title)

    def get_absolute_url(self):
        # Handle script prefix manually because we bypass reverse()
        return iri_to_uri(get_script_prefix().rstrip('/') + self.url)
示例#3
0
class SpecialEvent(models.Model):
    title = models.CharField(max_length=100, db_index=True)
    slug = models.SlugField(max_length=100, unique=True)
    image = AssetForeignKey('assets.Image', null=True, blank=True)
    summary = models.CharField(max_length=100,
                               help_text='A short sentence description of the event')
    description = models.TextField(help_text='All of the event details we have')
    start = models.DateTimeField(help_text='Start time/date.', db_index=True)
    start_date = models.DateField(editable=False, db_index=True)
    end = models.DateTimeField(help_text='End time/date.')
    end_date = models.DateField(editable=False, db_index=True)
    published = models.BooleanField(default=True, db_index=True)

    class Meta:
        ordering = ('start',)

    def __str__(self):
        return self.title

    def save(self, *args, **kwargs):
        # Used for easy queryset filtering
        self.start_date = self.start.date()
        self.end_date = self.end.date()

        super(SpecialEvent, self).save(*args, **kwargs)

    @models.permalink
    def get_absolute_url(self):
        return ('events:specialevent-detail', (), {
            'slug': self.slug,
        })

    def clean(self):
        if self.start > self.end:
            raise ValidationError('Start date must be earlier than end date.')
示例#4
0
class QuickLink(models.Model):
    image_file = AssetForeignKey('assets.Image')
    name = models.CharField(max_length=50)
    heading = models.CharField(max_length=20)
    body = models.TextField(max_length=250)
    button_text = models.CharField(max_length=20, default=u'View details »')
    link = models.CharField(max_length=300)

    def __str__(self):              # __unicode__ on Python 2
        return self.name
    def __unicode__(self):              # __unicode__ on Python 2
        return unicode(self.name)
示例#5
0
class Carousel(models.Model):
    image_file = AssetForeignKey('assets.Image')
    image_link = models.CharField(max_length=300, blank=True)
    name = models.CharField(max_length=50)
    heading = models.CharField(max_length=50, blank=True)
    body = models.TextField(max_length=150, blank=True)
    button_text = models.CharField(max_length=20, blank=True)
    link = models.CharField(max_length=300, blank=True)

    def __str__(self):              # __unicode__ on Python 2
        return self.name
    def __unicode__(self):              # __unicode__ on Python 2
        return unicode(self.name)
示例#6
0
class Featurette(models.Model):
    image_file = AssetForeignKey('assets.Image')
    name = models.CharField(max_length=50)
    heading1 = models.CharField(max_length=50)
    heading_link = models.CharField(max_length=300, blank=True)
    heading2 = models.CharField(max_length=50, blank=True)
    body = models.TextField(max_length=150)
    button_text = models.CharField(max_length=20, blank=True, default=u'View details »')
    link = models.CharField(max_length=300, blank=True)

    def __str__(self):              # __unicode__ on Python 2
        return self.name
    def __unicode__(self):              # __unicode__ on Python 2
        return unicode(self.name)
示例#7
0
class Post(models.Model):
    title = models.CharField(max_length=100, db_index=True)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    slug = models.SlugField(max_length=100, unique_for_date='date')
    date = models.DateTimeField(default=timezone.now, db_index=True)
    date_url = models.DateField(db_index=True, editable=False)
    image = AssetForeignKey('assets.Image',
                            null=True,
                            blank=True,
                            on_delete=models.CASCADE)
    teaser = models.TextField(blank=True)
    content = models.TextField()
    published = models.BooleanField(
        default=True,
        db_index=True,
        help_text='Post will be hidden unless this option is selected')
    url = models.URLField(blank=True)

    class Meta:
        get_latest_by = 'date'
        ordering = ('-date', )

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        """ Get absolute url sometimes we assign external url to the post. """
        url = '/'
        if self.url:
            url = self.url
        else:
            params = {
                'year': self.date_url.year,
                'month': str(self.date_url.month).zfill(2),
                'day': str(self.date_url.day).zfill(2),
                'slug': self.slug,
            }
            url = reverse('blanc_basic_news:post-detail', kwargs=params)
        return url

    def save(self, *args, **kwargs):
        self.date_url = self.date.date()
        super(Post, self).save(*args, **kwargs)