Exemple #1
0
class Post(models.Model):
    """Post model."""
    STATUS_CHOICES = (
        (1, _('Draft')),
        (2, _('Public')),
    )
    thumb = ImageWithThumbnailsField(upload_to='blogposts',
                                     thumbnail={
                                         'size': (200, 200),
                                         'options': ('crop', )
                                     },
                                     blank=True,
                                     null=True,
                                     help_text=_('Thumbnail'))
    title = models.CharField(_('title'), max_length=200)
    slug = models.SlugField(_('slug'), unique_for_date='publish')
    author = models.ForeignKey(User, blank=True, null=True)
    body = models.TextField(_('body'), )
    tease = models.TextField(
        _('tease'),
        blank=True,
        help_text=_('Concise text suggested. Does not appear in RSS feed.'))
    status = models.IntegerField(_('status'),
                                 choices=STATUS_CHOICES,
                                 default=2)
    allow_comments = models.BooleanField(_('allow comments'),
                                         default=False,
                                         editable=False)
    publish = models.DateTimeField(_('publish'), default=datetime.datetime.now)
    created = models.DateTimeField(_('created'), auto_now_add=True)
    modified = models.DateTimeField(_('modified'), auto_now=True)
    categories = models.ManyToManyField(Category, blank=True)
    tags = TagField()
    objects = PublicManager()

    class Meta:
        verbose_name = _('post')
        verbose_name_plural = _('posts')
        db_table = 'blog_posts'
        ordering = ('-publish', )
        get_latest_by = 'publish'

    def __unicode__(self):
        return u'%s' % self.title

    @permalink
    def get_absolute_url(self):
        return ('blog_detail', None, {
            'year': self.publish.year,
            'month': self.publish.strftime('%b').lower(),
            'day': self.publish.day,
            'slug': self.slug
        })

    def get_previous_post(self):
        return self.get_previous_by_publish(status__gte=2)

    def get_next_post(self):
        return self.get_next_by_publish(status__gte=2)
Exemple #2
0
class Post(models.Model):
    """Post model."""
    STATUS_CHOICES = (
        (1, _('Draft')),
        (2, _('Public')),
    )
    title = models.CharField(_('title'), max_length=200)
    slug = models.SlugField(_('slug'), unique_for_date='publish')
    author = models.ForeignKey(User, blank=True, null=True)
    body = models.TextField(_('body'))
    tease = models.TextField(_('tease'), blank=True)
    status = models.IntegerField(_('status'),
                                 choices=STATUS_CHOICES,
                                 default=2)
    allow_comments = models.BooleanField(_('allow comments'), default=True)
    publish = models.DateTimeField(_('publish'))
    created = models.DateTimeField(_('created'), auto_now_add=True)
    modified = models.DateTimeField(_('modified'), auto_now=True)
    categories = models.ManyToManyField(Category, blank=True)
    tags = TagField()
    objects = PublicManager()

    class Meta:
        verbose_name = _('post')
        verbose_name_plural = _('posts')
        db_table = 'blog_posts'
        ordering = ('-publish', )
        get_latest_by = 'publish'

    class Admin:
        list_display = ('title', 'publish', 'status')
        list_filter = ('publish', 'categories', 'status')
        search_fields = ('title', 'body')

    def __unicode__(self):
        return u'%s' % self.title

    @permalink
    def get_absolute_url(self):
        return ('blog_detail', None, {
            'year': self.publish.year,
            'month': self.publish.strftime('%b').lower(),
            'day': self.publish.day,
            'slug': self.slug
        })

    def get_previous_post(self):
        return self.get_previous_by_publish(status__gte=2)

    def get_next_post(self):
        return self.get_next_by_publish(status__gte=2)
Exemple #3
0
class Post(models.Model):
    """Post model."""
    STATUS_CHOICES = (
        (1, _('Draft')),
        (2, _('Public')),
    )
    title = models.CharField(_('title'), max_length=200)
    slug = models.SlugField(_('slug'), unique_for_date='publish')
    author = models.ForeignKey(User, blank=True, null=True)

    markup = MarkupField(default='markdown')
    body = models.TextField(_('body'), )
    tease = models.TextField(
        _('tease'),
        blank=True,
        help_text=_('Concise text suggested. Does not appear in RSS feed.'))

    body_markup = models.TextField(editable=True, blank=True, null=True)
    visits = models.IntegerField(
        _('visits'), default=0,
        editable=False)  #to keep track of most popular posts
    status = models.IntegerField(_('status'),
                                 choices=STATUS_CHOICES,
                                 default=2)
    allow_comments = models.BooleanField(_('allow comments'), default=True)
    publish = models.DateTimeField(_('publish'), default=datetime.datetime.now)
    created = models.DateTimeField(_('created'), auto_now_add=True)
    modified = models.DateTimeField(_('modified'), auto_now=True)
    categories = models.ManyToManyField(Category, blank=True)
    tags = TagField()
    objects = PublicManager()

    class Meta:
        verbose_name = _('post')
        verbose_name_plural = _('posts')
        db_table = 'blog_posts'
        ordering = ('-publish', )
        get_latest_by = 'publish'

    class Admin:
        list_display = ('title', 'publish', 'status')
        list_filter = ('publish', 'categories', 'status')
        search_fields = ('title', 'body')

    class ProxyMeta:
        title = 'title'
        description = 'body_markup'
        tags = 'tags'
        pub_date = 'publish'
        active = {'status': 2}

    def __unicode__(self):
        return u'%s' % self.title

    def save(self, *args, **kwargs):
        blog_settings = Settings.get_current()

        if blog_settings.active_editor > 1:
            self.markup = "none"
            self.body_markup = self.body
        else:
            self.body_markup = mark_safe(
                formatter(self.body, filter_name=self.markup))
        super(Post, self).save(*args, **kwargs)

        ping_google = getattr(blog_settings, "ping_google", False)

        if ping_google:
            try:
                ping_google()
            except:
                pass

    @permalink
    def get_absolute_url(self):
        return ('blog_detail', None, {
            'year': self.publish.year,
            'month': self.publish.strftime('%b').lower(),
            'day': self.publish.day,
            'slug': self.slug
        })

    def get_previous_post(self):
        return self.get_previous_by_publish(status__gte=2)

    def get_next_post(self):
        return self.get_next_by_publish(status__gte=2)

    @property
    def get_meta_keywords(self):
        if self.tags == '':
            return Settings.get_current().meta_keywords
        else:
            return self.tags

    @property
    def get_meta_description(self):
        if self.tease == '':
            return Settings.get_current().meta_description
        else:
            return Truncator(self.tease).words(255, truncate='...')
Exemple #4
0
class Post(models.Model):
    """Post model."""
    STATUS_CHOICES = (
        (1, _('Draft')),
        (2, _('Public')),
    )
    site = models.ForeignKey('sites.Site', on_delete=models.PROTECT)
    title = models.CharField(_('title'), max_length=200)
    slug = models.SlugField(_('slug'), unique_for_date='publish')
    author = models.ForeignKey(User,
                               blank=True,
                               null=True,
                               on_delete=models.PROTECT)
    body = models.TextField(_('body'), )
    tease = models.TextField(
        _('tease'),
        blank=True,
        help_text=_('Concise text suggested. Does not appear in RSS feed.'))
    status = models.IntegerField(_('status'),
                                 choices=STATUS_CHOICES,
                                 default=2)
    allow_comments = models.BooleanField(_('allow comments'), default=True)
    publish = models.DateTimeField(_('publish'), default=datetime.datetime.now)
    created = models.DateTimeField(_('created'), auto_now_add=True)
    modified = models.DateTimeField(_('modified'), auto_now=True)
    categories = models.ManyToManyField(Category, blank=True)
    tags = TagField()
    objects = PublicManager()
    followup_to = models.ForeignKey(
        'Post',
        on_delete=models.PROTECT,
        null=True,
        blank=True,
        related_name="followup_set",
        help_text="Links to the previous post in a series")

    class Meta:
        verbose_name = _('post')
        verbose_name_plural = _('posts')
        db_table = 'blog_posts'
        ordering = ('-publish', )
        get_latest_by = 'publish'
        permissions = [
            ('post_editor', 'Post Editor'),
        ]

    def __unicode__(self):
        return u'%s' % self.title

    def __str__(self):
        return self.title

    def get_deferred_fields(self):
        # Make tags not deferred
        deferred_set = super(Post, self).get_deferred_fields()
        return {f for f in deferred_set if f != 'tags'}

    def save(self, *args, **kwargs):
        self.site = Site.objects.get_current()
        super(Post, self).save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse('blog_detail',
                       kwargs={
                           'year': self.publish.year,
                           'month': self.publish.strftime('%b').lower(),
                           'day': self.publish.day,
                           'slug': self.slug
                       })

    def get_previous_post(self):
        return self.get_previous_by_publish(status__gte=2)

    def get_next_post(self):
        return self.get_next_by_publish(status__gte=2)