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)
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)
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='...')
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)