diff --git a/djangocms_blog/admin.py b/djangocms_blog/admin.py index 233b232..ab12c7c 100755 --- a/djangocms_blog/admin.py +++ b/djangocms_blog/admin.py @@ -1,7 +1,9 @@ # -*- coding: utf-8 -*- from admin_enhancer.admin import EnhancedModelAdminMixin from cms.admin.placeholderadmin import PlaceholderAdmin, FrontendEditableAdmin +from copy import deepcopy from django.contrib import admin +from django.conf import settings from parler.admin import TranslatableAdmin from .models import Post, BlogCategory @@ -11,6 +13,12 @@ class BlogCategoryAdmin(EnhancedModelAdminMixin, TranslatableAdmin): def get_prepopulated_fields(self, request, obj=None): return {"slug": ("name",)} + class Media: + css = { + 'all': ('%sdjangocms_blog/css/%s' % (settings.STATIC_URL, + "djangocms_blog_admin.css"),) + } + class PostAdmin(EnhancedModelAdminMixin, FrontendEditableAdmin, PlaceholderAdmin, TranslatableAdmin): @@ -19,13 +27,12 @@ class PostAdmin(EnhancedModelAdminMixin, FrontendEditableAdmin, raw_id_fields = ['author'] frontend_editable_fields = ("title", "abstract") enhance_exclude = ('main_image', 'tags') - change_form_template = "admin/djangocms_blog/post_change_form.html" - fieldsets = [ + _fieldsets = [ (None, { 'fields': [('title', 'slug', 'publish'), ('categories', 'tags'), - ('date_published', 'date_published_end'), 'author'] + ('date_published', 'date_published_end')] }), (None, { 'fields': [('main_image', 'main_image_thumbnail', 'main_image_full'), @@ -33,6 +40,14 @@ class PostAdmin(EnhancedModelAdminMixin, FrontendEditableAdmin, }), ] + def get_fieldsets(self, request, obj=None): + if request.user.is_superuser: + fsets = deepcopy(self._fieldsets) + fsets[0][1]['fields'].append('author') + return fsets + else: + return self._fieldsets + def get_prepopulated_fields(self, request, obj=None): return {"slug": ("title",)} @@ -41,5 +56,12 @@ class PostAdmin(EnhancedModelAdminMixin, FrontendEditableAdmin, obj.author = request.user super(PostAdmin, self).save_model(request, obj, form, change) + class Media: + css = { + 'all': ('%sdjangocms_blog/css/%s' % (settings.STATIC_URL, + "djangocms_blog_admin.css"),) + } + + admin.site.register(BlogCategory, BlogCategoryAdmin) admin.site.register(Post, PostAdmin) diff --git a/djangocms_blog/cms_plugins.py b/djangocms_blog/cms_plugins.py index 48ec67d..c7f3103 100644 --- a/djangocms_blog/cms_plugins.py +++ b/djangocms_blog/cms_plugins.py @@ -10,13 +10,13 @@ from .forms import LatestEntriesForm class BlogPlugin(CMSPluginBase): - module = 'Blog' + class LatestEntriesPlugin(BlogPlugin): render_template = 'djangocms_blog/plugins/latest_entries.html' - name = _('Latest Blog Entries') + name = _('Latest Blog Articles') model = LatestPostsPlugin form = LatestEntriesForm filter_horizontal = ('categories',) @@ -25,10 +25,12 @@ class LatestEntriesPlugin(BlogPlugin): context['instance'] = instance return context + class AuthorPostsPlugin(BlogPlugin): module = _('Blog') - name = _('Author Blog posts') + name = _('Author Blog Articles') model = AuthorEntriesPlugin + form = LatestEntriesForm render_template = 'djangocms_blog/plugins/authors.html' filter_horizontal = ['authors'] @@ -36,6 +38,7 @@ class AuthorPostsPlugin(BlogPlugin): context['instance'] = instance return context + class BlogTagsPlugin(BlogPlugin): module = _('Blog') name = _('Tags') @@ -46,6 +49,7 @@ class BlogTagsPlugin(BlogPlugin): context['tags'] = Post.objects.tag_cloud(queryset=Post.objects.published()) return context + class BlogCategoryPlugin(BlogPlugin): module = _('Blog') name = _('Categories') @@ -56,6 +60,7 @@ class BlogCategoryPlugin(BlogPlugin): context['categories'] = BlogCategory.objects.all() return context + class BlogArchivePlugin(BlogPlugin): module = _('Blog') name = _('Archive') @@ -66,6 +71,7 @@ class BlogArchivePlugin(BlogPlugin): context['dates'] = Post.objects.get_months(queryset=Post.objects.published()) return context + plugin_pool.register_plugin(LatestEntriesPlugin) plugin_pool.register_plugin(AuthorPostsPlugin) plugin_pool.register_plugin(BlogTagsPlugin) diff --git a/djangocms_blog/feeds.py b/djangocms_blog/feeds.py index aadc5f8..c458540 100644 --- a/djangocms_blog/feeds.py +++ b/djangocms_blog/feeds.py @@ -13,16 +13,16 @@ class LatestEntriesFeed(Feed): return reverse('djangocms_blog:latest-posts') def title(self): - return _('Blog posts on %(site_name)s') % {'site_name': Site.objects.get_current().name} + return _('Blog articles on %(site_name)s') % {'site_name': Site.objects.get_current().name} def items(self, obj): return Post.objects.published().order_by('-date_published')[:10] def item_title(self, item): - return item.lazy_translation_getter('title') + return item.safe_translation_getter('title') def item_description(self, item): - return item.lazy_translation_getter('abstract') + return item.safe_translation_getter('abstract') class TagFeed(LatestEntriesFeed): diff --git a/djangocms_blog/fields.py b/djangocms_blog/fields.py index 545df47..09095ee 100644 --- a/djangocms_blog/fields.py +++ b/djangocms_blog/fields.py @@ -2,8 +2,6 @@ from django.utils.translation import ugettext_lazy as _ from django.db import models from django.contrib.auth.models import User -from south.modelsinspector import add_introspection_rules -add_introspection_rules([], ["^djangocms_blog\.fields\.UsersWithPermsManyToManyField"]) class UsersWithPermsManyToManyField(models.ManyToManyField): @@ -27,4 +25,4 @@ class UsersWithPermsManyToManyField(models.ManyToManyField): } defaults.update(kwargs) - return super(UsersWithPermsManyToManyField, self).formfield(**defaults) \ No newline at end of file + return super(UsersWithPermsManyToManyField, self).formfield(**defaults) diff --git a/djangocms_blog/forms.py b/djangocms_blog/forms.py index 96f8838..3abc1d5 100644 --- a/djangocms_blog/forms.py +++ b/djangocms_blog/forms.py @@ -7,12 +7,12 @@ import django_select2 class LatestEntriesForm(forms.ModelForm): class Meta: - widgets = { 'tags': django_select2.Select2MultipleWidget } class Media: css = { - 'all': ('%s/css/%s' % (settings.STATIC_URL, "djangocms_blog_admin.css"),) + 'all': ('%sdjangocms_blog/css/%s' % (settings.STATIC_URL, + "djangocms_blog_admin.css"),) } \ No newline at end of file diff --git a/djangocms_blog/managers.py b/djangocms_blog/managers.py index f4edc5f..8a64c38 100644 --- a/djangocms_blog/managers.py +++ b/djangocms_blog/managers.py @@ -50,23 +50,22 @@ class TaggedFilterItem(object): qs = self.tag_list(other_model, queryset) return qs.values("slug") - def tag_cloud(self, other_model=None, queryset=None, start=None): - from taggit_templatetags.templatetags.taggit_extras import get_weight_fun + def tag_cloud(self, other_model=None, queryset=None, published=True): from taggit.models import TaggedItem tag_ids = self._taglist(other_model, queryset) - tagquery = TaggedItem.tags_for(self.model).filter(id__in=tag_ids) - if start is not None: - tagquery = tagquery.filter(name__istartswith=start) - tagquery = tagquery.annotate(count=models.Count('taggit_taggeditem_items')) - count = tagquery.values_list('count', flat=True) - if len(count) > 0: - weight_fun = get_weight_fun(BLOG_TAGCLOUD_MIN, - BLOG_TAGCLOUD_MAX, - min(count), BLOG_TAGCLOUD_MAX) - tagquery = tagquery.order_by('name') - for tag in tagquery: - tag.weight = weight_fun(tag.count) - return tagquery + kwargs = {} + if published: + kwargs = TaggedItem.bulk_lookup_kwargs(self.model.objects.published()) + kwargs['tag_id__in'] = tag_ids + counted_tags = dict(TaggedItem.objects + .filter(**kwargs) + .values('tag') + .annotate(count=models.Count('tag')) + .values_list('tag', 'count')) + tags = TaggedItem.tag_model().objects.filter(pk__in=counted_tags.keys()) + for tag in tags: + tag.count = counted_tags[tag.pk] + return sorted(tags, key=lambda x: -x.count) class GenericDateTaggedManager(TaggedFilterItem, TranslationManager): diff --git a/djangocms_blog/migrations/0001_initial.py b/djangocms_blog/migrations/0001_initial.py index 3644e55..14a6b9a 100644 --- a/djangocms_blog/migrations/0001_initial.py +++ b/djangocms_blog/migrations/0001_initial.py @@ -12,12 +12,15 @@ class Migration(SchemaMigration): db.create_table(u'djangocms_blog_blogcategory_translation', ( (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), ('language_code', self.gf('django.db.models.fields.CharField')(max_length=15, db_index=True)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=255)), - ('slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=50, blank=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=200)), + ('slug', self.gf('django.db.models.fields.SlugField')(max_length=50, blank=True, db_index=True)), ('master', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', null=True, to=orm['djangocms_blog.BlogCategory'])), )) db.send_create_signal(u'djangocms_blog', ['BlogCategoryTranslation']) + # Adding unique constraint on 'BlogCategoryTranslation', fields ['language_code', 'slug'] + db.create_unique(u'djangocms_blog_blogcategory_translation', ['language_code', 'slug']) + # Adding unique constraint on 'BlogCategoryTranslation', fields ['language_code', 'master'] db.create_unique(u'djangocms_blog_blogcategory_translation', ['language_code', 'master_id']) @@ -35,12 +38,15 @@ class Migration(SchemaMigration): (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), ('language_code', self.gf('django.db.models.fields.CharField')(max_length=15, db_index=True)), ('title', self.gf('django.db.models.fields.CharField')(max_length=255)), - ('slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=50, blank=True)), + ('slug', self.gf('django.db.models.fields.SlugField')(db_index=True, max_length=50, blank=True)), ('abstract', self.gf('djangocms_text_ckeditor.fields.HTMLField')()), ('master', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', null=True, to=orm['djangocms_blog.Post'])), )) db.send_create_signal(u'djangocms_blog', ['PostTranslation']) + # Adding unique constraint on 'PostTranslation', fields ['language_code', 'slug'] + db.create_unique(u'djangocms_blog_post_translation', ['language_code', 'slug']) + # Adding unique constraint on 'PostTranslation', fields ['language_code', 'master'] db.create_unique(u'djangocms_blog_post_translation', ['language_code', 'master_id']) @@ -77,7 +83,7 @@ class Migration(SchemaMigration): db.send_create_signal(u'djangocms_blog', ['LatestPostsPlugin']) # Adding M2M table for field tags on 'LatestPostsPlugin' - m2m_table_name = db.shorten_name(u'cmsplugin_latestpostsplugin_tags') + m2m_table_name = db.shorten_name(u'djangocms_blog_latestpostsplugin_tags') db.create_table(m2m_table_name, ( ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), ('latestpostsplugin', models.ForeignKey(orm[u'djangocms_blog.latestpostsplugin'], null=False)), @@ -86,7 +92,7 @@ class Migration(SchemaMigration): db.create_unique(m2m_table_name, ['latestpostsplugin_id', 'tag_id']) # Adding M2M table for field categories on 'LatestPostsPlugin' - m2m_table_name = db.shorten_name(u'cmsplugin_latestpostsplugin_categories') + m2m_table_name = db.shorten_name(u'djangocms_blog_latestpostsplugin_categories') db.create_table(m2m_table_name, ( ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), ('latestpostsplugin', models.ForeignKey(orm[u'djangocms_blog.latestpostsplugin'], null=False)), @@ -102,7 +108,7 @@ class Migration(SchemaMigration): db.send_create_signal(u'djangocms_blog', ['AuthorEntriesPlugin']) # Adding M2M table for field authors on 'AuthorEntriesPlugin' - m2m_table_name = db.shorten_name(u'cmsplugin_authorentriesplugin_authors') + m2m_table_name = db.shorten_name(u'djangocms_blog_authorentriesplugin_authors') db.create_table(m2m_table_name, ( ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), ('authorentriesplugin', models.ForeignKey(orm[u'djangocms_blog.authorentriesplugin'], null=False)), @@ -115,9 +121,15 @@ class Migration(SchemaMigration): # Removing unique constraint on 'PostTranslation', fields ['language_code', 'master'] db.delete_unique(u'djangocms_blog_post_translation', ['language_code', 'master_id']) + # Removing unique constraint on 'PostTranslation', fields ['language_code', 'slug'] + db.delete_unique(u'djangocms_blog_post_translation', ['language_code', 'slug']) + # Removing unique constraint on 'BlogCategoryTranslation', fields ['language_code', 'master'] db.delete_unique(u'djangocms_blog_blogcategory_translation', ['language_code', 'master_id']) + # Removing unique constraint on 'BlogCategoryTranslation', fields ['language_code', 'slug'] + db.delete_unique(u'djangocms_blog_blogcategory_translation', ['language_code', 'slug']) + # Deleting model 'BlogCategoryTranslation' db.delete_table(u'djangocms_blog_blogcategory_translation') @@ -137,16 +149,16 @@ class Migration(SchemaMigration): db.delete_table(u'cmsplugin_latestpostsplugin') # Removing M2M table for field tags on 'LatestPostsPlugin' - db.delete_table(db.shorten_name(u'cmsplugin_latestpostsplugin_tags')) + db.delete_table(db.shorten_name(u'djangocms_blog_latestpostsplugin_tags')) # Removing M2M table for field categories on 'LatestPostsPlugin' - db.delete_table(db.shorten_name(u'cmsplugin_latestpostsplugin_categories')) + db.delete_table(db.shorten_name(u'djangocms_blog_latestpostsplugin_categories')) # Deleting model 'AuthorEntriesPlugin' db.delete_table(u'cmsplugin_authorentriesplugin') # Removing M2M table for field authors on 'AuthorEntriesPlugin' - db.delete_table(db.shorten_name(u'cmsplugin_authorentriesplugin_authors')) + db.delete_table(db.shorten_name(u'djangocms_blog_authorentriesplugin_authors')) models = { @@ -230,12 +242,12 @@ class Migration(SchemaMigration): 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['djangocms_blog.BlogCategory']", 'null': 'True', 'blank': 'True'}) }, u'djangocms_blog.blogcategorytranslation': { - 'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'BlogCategoryTranslation', 'db_table': "u'djangocms_blog_blogcategory_translation'"}, + 'Meta': {'unique_together': "[('language_code', 'slug'), ('language_code', 'master')]", 'object_name': 'BlogCategoryTranslation', 'db_table': "u'djangocms_blog_blogcategory_translation'"}, u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), 'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['djangocms_blog.BlogCategory']"}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'blank': 'True'}) + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'blank': 'True'}) }, u'djangocms_blog.latestpostsplugin': { 'Meta': {'object_name': 'LatestPostsPlugin', 'db_table': "u'cmsplugin_latestpostsplugin'", '_ormbases': ['cms.CMSPlugin']}, @@ -245,7 +257,7 @@ class Migration(SchemaMigration): 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['taggit.Tag']", 'symmetrical': 'False', 'blank': 'True'}) }, u'djangocms_blog.post': { - 'Meta': {'object_name': 'Post'}, + 'Meta': {'ordering': "('-date_published', '-date_created')", 'object_name': 'Post'}, 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"}), 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'blog_posts'", 'symmetrical': 'False', 'to': u"orm['djangocms_blog.BlogCategory']"}), 'content': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), @@ -260,7 +272,7 @@ class Migration(SchemaMigration): 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) }, u'djangocms_blog.posttranslation': { - 'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PostTranslation', 'db_table': "u'djangocms_blog_post_translation'"}, + 'Meta': {'unique_together': "[('language_code', 'slug'), ('language_code', 'master')]", 'object_name': 'PostTranslation', 'db_table': "u'djangocms_blog_post_translation'"}, 'abstract': ('djangocms_text_ckeditor.fields.HTMLField', [], {}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), @@ -321,4 +333,4 @@ class Migration(SchemaMigration): } } - complete_apps = ['djangocms_blog'] \ No newline at end of file + complete_apps = ['djangocms_blog'] diff --git a/djangocms_blog/models.py b/djangocms_blog/models.py index 7b7b857..14b9e62 100644 --- a/djangocms_blog/models.py +++ b/djangocms_blog/models.py @@ -11,10 +11,12 @@ from django.utils.translation import ugettext_lazy as _ from djangocms_text_ckeditor.fields import HTMLField from filer.fields.image import FilerImageField from parler.models import TranslatableModel, TranslatedFields +from parler.managers import TranslationManager from taggit_autosuggest.managers import TaggableManager -from .managers import GenericDateTaggedManager from . import settings +from .managers import GenericDateTaggedManager +from .fields import UsersWithPermsManyToManyField class BlogCategory(TranslatableModel): @@ -28,16 +30,19 @@ class BlogCategory(TranslatableModel): translations = TranslatedFields( name=models.CharField(_('name'), max_length=255), - slug=models.SlugField(_('slug'), blank=True, unique=True), + slug=models.SlugField(_('slug'), blank=True, db_index=True), + meta={'unique_together': (('language_code', 'slug'),)} ) + objects = TranslationManager() + class Meta: verbose_name = _('blog category') verbose_name_plural = _('blog categories') - + @property def count(self): - return self.blog_posts.count() + return self.blog_posts.filter(publish=True).count() def __unicode__(self): return self.safe_translation_getter('name') @@ -55,7 +60,7 @@ class Post(TranslatableModel): """ Blog post """ - author = models.ForeignKey(User) + author = models.ForeignKey(User, blank=True) date_created = models.DateTimeField(auto_now_add=True) date_modified = models.DateTimeField(auto_now=True) @@ -76,9 +81,9 @@ class Post(TranslatableModel): translations = TranslatedFields( title=models.CharField(max_length=255), - slug=models.SlugField(_('slug'), blank=True, unique=True), + slug=models.SlugField(_('slug'), blank=True, db_index=True), abstract=HTMLField(), - + meta={'unique_together': (('language_code', 'slug'),)} ) content = PlaceholderField("post_content") @@ -86,8 +91,9 @@ class Post(TranslatableModel): tags = TaggableManager(blank=True) class Meta: - verbose_name = _('blog post') - verbose_name_plural = _('blog post') + verbose_name = _('blog article') + verbose_name_plural = _('blog articles') + ordering = ("-date_published", "-date_created") def __unicode__(self): return self.safe_translation_getter('title') @@ -129,12 +135,15 @@ class Post(TranslatableModel): class LatestPostsPlugin(CMSPlugin): - latest_posts = models.IntegerField(default=5, help_text=_('The number of latests posts to be displayed.')) - tags = models.ManyToManyField('taggit.Tag', blank=True, help_text=_('Show only the blog posts tagged with chosen tags.')) - categories = models.ManyToManyField('BlogCategory', blank=True, help_text=_('Show only the blog posts tagged with chosen tags.')) + latest_posts = models.IntegerField(_(u'Articles'), default=settings.BLOG_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 tags.')) def __unicode__(self): - return u"%s latest post 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() @@ -148,11 +157,14 @@ class LatestPostsPlugin(CMSPlugin): class AuthorEntriesPlugin(CMSPlugin): - authors = models.ManyToManyField(User, verbose_name=_('Authors')) - latest_posts = models.IntegerField(default=5, help_text=_('The number of author entries to be displayed.')) + #authors = models.ManyToManyField(User, verbose_name=_('Authors')) + authors = UsersWithPermsManyToManyField(perms=['add_post'], + verbose_name=_('Authors')) + latest_posts = models.IntegerField(_(u'Articles'), default=settings.BLOG_LATEST_POSTS, + help_text=_('The number of author articles to be displayed.')) def __unicode__(self): - return u"%s latest post 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() @@ -163,4 +175,7 @@ class AuthorEntriesPlugin(CMSPlugin): def get_authors(self): authors = self.authors.all() + for author in authors: + if author.post_set.filter(publish=True).exists: + author.count = author.post_set.filter(publish=True).count() return authors diff --git a/djangocms_blog/settings.py b/djangocms_blog/settings.py index b2ffae7..bc37158 100644 --- a/djangocms_blog/settings.py +++ b/djangocms_blog/settings.py @@ -13,4 +13,6 @@ BLOG_IMAGE_FULL_SIZE = { } BLOG_TAGCLOUD_MIN = 1 -BLOG_TAGCLOUD_MAX = 10 \ No newline at end of file +BLOG_TAGCLOUD_MAX = 10 +BLOG_PAGINATION = 10 +BLOG_LATEST_POSTS = 5 \ No newline at end of file diff --git a/djangocms_blog/views.py b/djangocms_blog/views.py index ed5c187..ada03d8 100644 --- a/djangocms_blog/views.py +++ b/djangocms_blog/views.py @@ -8,6 +8,7 @@ from django.utils.translation import ugettext_lazy as _ from django.views.generic import ListView, DetailView from .models import Post, BlogCategory +from .settings import BLOG_PAGINATION class BaseBlogView(object): @@ -28,6 +29,7 @@ class PostListView(BaseBlogView, ListView): model = Post context_object_name = 'post_list' template_name = "djangocms_blog/post_list.html" + paginate_by = BLOG_PAGINATION class PostDetailView(BaseBlogView, DetailView): @@ -44,6 +46,7 @@ class PostArchiveView(BaseBlogView, ListView): date_field = 'date_published' allow_empty = True allow_future = True + paginate_by = BLOG_PAGINATION def get_queryset(self): qs = super(PostArchiveView, self).get_queryset() @@ -65,6 +68,7 @@ class TaggedListView(BaseBlogView, ListView): model = Post context_object_name = 'post_list' template_name = "djangocms_blog/post_list.html" + paginate_by = BLOG_PAGINATION def get_queryset(self): qs = super(TaggedListView, self).get_queryset() @@ -80,6 +84,7 @@ class AuthorEntriesView(BaseBlogView, ListView): model = Post context_object_name = 'post_list' template_name = "djangocms_blog/post_list.html" + paginate_by = BLOG_PAGINATION def get_queryset(self): qs = super(AuthorEntriesView, self).get_queryset() @@ -97,6 +102,7 @@ class CategoryEntriesView(BaseBlogView, ListView): context_object_name = 'post_list' template_name = "djangocms_blog/post_list.html" _category = None + paginate_by = BLOG_PAGINATION @property def category(self):