diff --git a/djangocms_blog/models.py b/djangocms_blog/models.py index 33d9258..8124109 100644 --- a/djangocms_blog/models.py +++ b/djangocms_blog/models.py @@ -77,33 +77,33 @@ class Post(ModelMeta, TranslatableModel): Blog post """ author = models.ForeignKey(dj_settings.AUTH_USER_MODEL, - verbose_name=_('Author'), null=True, blank=True, + verbose_name=_(u'author'), null=True, blank=True, related_name='djangocms_blog_post_author') - date_created = models.DateTimeField(auto_now_add=True) - date_modified = models.DateTimeField(auto_now=True) - date_published = models.DateTimeField(_('Published Since'), + date_created = models.DateTimeField(_(u'created'), auto_now_add=True) + date_modified = models.DateTimeField(_(u'last modified'), auto_now=True) + date_published = models.DateTimeField(_(u'published Since'), default=timezone.now) - date_published_end = models.DateTimeField(_('Published Until'), null=True, + date_published_end = models.DateTimeField(_(u'published Until'), null=True, blank=True) - publish = models.BooleanField(_('Publish'), default=False) - categories = models.ManyToManyField(BlogCategory, verbose_name=_('category'), + publish = models.BooleanField(_(u'publish'), default=False) + categories = models.ManyToManyField(BlogCategory, verbose_name=_(u'category'), related_name='blog_posts',) - main_image = FilerImageField(verbose_name=_('Main image'), blank=True, null=True, + main_image = FilerImageField(verbose_name=_(u'main image'), blank=True, null=True, on_delete=models.SET_NULL, related_name='djangocms_blog_post_image') main_image_thumbnail = models.ForeignKey(ThumbnailOption, - verbose_name=_('Main image thumbnail'), + verbose_name=_(u'main image thumbnail'), related_name='djangocms_blog_post_thumbnail', on_delete=models.SET_NULL, blank=True, null=True) main_image_full = models.ForeignKey(ThumbnailOption, - verbose_name=_('Main image full'), + verbose_name=_(u'main image full'), related_name='djangocms_blog_post_full', on_delete=models.SET_NULL, blank=True, null=True) enable_comments = models.BooleanField( - verbose_name=_(u'Enable comments on post'), + verbose_name=_(u'enable comments on post'), default=get_setting('ENABLE_COMMENTS') ) sites = models.ManyToManyField(Site, verbose_name=_(u'Site(s)'), blank=True, @@ -114,18 +114,18 @@ class Post(ModelMeta, TranslatableModel): ) translations = TranslatedFields( - title=models.CharField(_('Title'), max_length=255), - slug=models.SlugField(_('slug'), blank=True, db_index=True), - abstract=HTMLField(_('Abstract'), blank=True, default=''), - meta_description=models.TextField(verbose_name=_(u'Post meta description'), + title=models.CharField(_(u'title'), max_length=255), + slug=models.SlugField(_(u'slug'), blank=True, db_index=True), + abstract=HTMLField(_(u'abstract'), blank=True, default=''), + meta_description=models.TextField(verbose_name=_(u'post meta description'), blank=True, default=''), - meta_keywords=models.TextField(verbose_name=_(u'Post meta keywords'), + meta_keywords=models.TextField(verbose_name=_(u'post meta keywords'), blank=True, default=''), - meta_title=models.CharField(verbose_name=_(u'Post meta title'), + meta_title=models.CharField(verbose_name=_(u'post meta title'), help_text=_(u'used in title tag and social sharing'), max_length=255, blank=True, default=''), - post_text=HTMLField(_('Text'), default='', blank=True), + post_text=HTMLField(_(u'text'), default='', blank=True), meta={'unique_together': (('language_code', 'slug'),)} ) content = PlaceholderField('post_content', related_name='post_content') @@ -160,6 +160,34 @@ class Post(ModelMeta, TranslatableModel): 'url': 'get_absolute_url', } + class Meta: + verbose_name = _('blog article') + verbose_name_plural = _('blog articles') + ordering = ('-date_published', '-date_created') + get_latest_by = 'date_published' + + def __str__(self): + return self.safe_translation_getter('title') + + def get_absolute_url(self): + kwargs = {'year': self.date_published.year, + 'month': '%02d' % self.date_published.month, + 'day': '%02d' % self.date_published.day, + 'slug': self.safe_translation_getter('slug', + language_code=get_language(), + any_language=True)} + return reverse('djangocms_blog:post-detail', kwargs=kwargs) + + def save(self, *args, **kwargs): + super(Post, self).save(*args, **kwargs) + main_lang = self.get_current_language() + for lang in self.get_available_languages(): + self.set_current_language(lang) + if not self.slug and self.title: + self.slug = slugify(self.title) + self.set_current_language(main_lang) + self.save_translations() + def get_title(self): title = self.safe_translation_getter('meta_title', any_language=True) if not title: @@ -187,34 +215,6 @@ class Post(ModelMeta, TranslatableModel): def get_author(self): return self.author - class Meta: - verbose_name = _('blog article') - verbose_name_plural = _('blog articles') - ordering = ('-date_published', '-date_created') - get_latest_by = 'date_published' - - def __str__(self): - return self.safe_translation_getter('title') - - def save(self, *args, **kwargs): - super(Post, self).save(*args, **kwargs) - main_lang = self.get_current_language() - for lang in self.get_available_languages(): - self.set_current_language(lang) - if not self.slug and self.title: - self.slug = slugify(self.title) - self.set_current_language(main_lang) - self.save_translations() - - def get_absolute_url(self): - kwargs = {'year': self.date_published.year, - 'month': '%02d' % self.date_published.month, - 'day': '%02d' % self.date_published.day, - 'slug': self.safe_translation_getter('slug', - language_code=get_language(), - any_language=True)} - return reverse('djangocms_blog:post-detail', kwargs=kwargs) - def thumbnail_options(self): if self.main_image_thumbnail_id: return self.main_image_thumbnail.as_dict @@ -245,20 +245,20 @@ class BasePostPlugin(CMSPlugin): return posts def __str__(self): - return unicode(self.latest_posts) + return force_text(self.latest_posts) class LatestPostsPlugin(BasePostPlugin): - latest_posts = models.IntegerField(_(u'Articles'), default=get_setting('LATEST_POSTS'), - help_text=_('The number of latests articles to be displayed.')) - tags = models.ManyToManyField('taggit.Tag', blank=True, - help_text=_('Show only the blog articles tagged with chosen tags.')) - categories = models.ManyToManyField('BlogCategory', blank=True, - help_text=_('Show only the blog articles tagged with chosen categories.')) + latest_posts = models.IntegerField(_(u'articles'), default=get_setting('LATEST_POSTS'), + help_text=_(u'The number of latests articles to be displayed.')) + tags = models.ManyToManyField('taggit.Tag', blank=True, verbose_name=_(u'filter by tag'), + help_text=_(u'Show only the blog articles tagged with chosen tags.')) + categories = models.ManyToManyField('BlogCategory', blank=True, verbose_name=_(u'filter by category'), + help_text=_(u'Show only the blog articles tagged with chosen categories.')) def __str__(self): - return u'%s latest articles by tag' % self.latest_posts + return _(u'%s latest articles by tag') % self.latest_posts def copy_relations(self, oldinstance): self.tags = oldinstance.tags.all() @@ -274,16 +274,16 @@ class LatestPostsPlugin(BasePostPlugin): class AuthorEntriesPlugin(BasePostPlugin): authors = models.ManyToManyField( - dj_settings.AUTH_USER_MODEL, verbose_name=_('Authors'), + dj_settings.AUTH_USER_MODEL, verbose_name=_('authors'), limit_choices_to={'djangocms_blog_post_author__publish': True} ) latest_posts = models.IntegerField( - _(u'Articles'), default=get_setting('LATEST_POSTS'), - help_text=_('The number of author articles to be displayed.') + _(u'articles'), default=get_setting('LATEST_POSTS'), + help_text=_(u'The number of author articles to be displayed.') ) def __str__(self): - return u'%s latest articles by author' % self.latest_posts + return _(u'%s latest articles by author') % self.latest_posts def copy_relations(self, oldinstance): self.authors = oldinstance.authors.all()