Merge pull request #227 from nephila/feature/change_publish_date
Change the default value of date_published to null
This commit is contained in:
commit
8cfb7b7da8
8 changed files with 296 additions and 19 deletions
|
@ -3,10 +3,11 @@
|
||||||
History
|
History
|
||||||
-------
|
-------
|
||||||
|
|
||||||
0.7.1 (unreleased)
|
0.8.0 (unreleased)
|
||||||
++++++++++++++++++
|
++++++++++++++++++
|
||||||
|
|
||||||
* Add django-knocker integration
|
* Add django-knocker integration
|
||||||
|
* Change the default value of date_published to null
|
||||||
|
|
||||||
0.7.0 (2016-03-19)
|
0.7.0 (2016-03-19)
|
||||||
++++++++++++++++++
|
++++++++++++++++++
|
||||||
|
|
|
@ -42,6 +42,10 @@ Supported django CMS versions:
|
||||||
|
|
||||||
* django CMS 3.x
|
* django CMS 3.x
|
||||||
|
|
||||||
|
.. warning:: Starting from version 0.8, date_published is not set anymore
|
||||||
|
when creating a post but rather when publishing.
|
||||||
|
This does not change the overall behavior, but be warned if you
|
||||||
|
expect it to be not null in custom code.
|
||||||
|
|
||||||
.. warning:: Version 0.6 changes the field of LatestPostsPlugin.tags field.
|
.. warning:: Version 0.6 changes the field of LatestPostsPlugin.tags field.
|
||||||
A datamigration is in place to migrate the data, but check that
|
A datamigration is in place to migrate the data, but check that
|
||||||
|
|
|
@ -80,6 +80,7 @@ class TaggedFilterItem(object):
|
||||||
|
|
||||||
class GenericDateQuerySet(AppHookConfigTranslatableQueryset):
|
class GenericDateQuerySet(AppHookConfigTranslatableQueryset):
|
||||||
start_date_field = 'date_published'
|
start_date_field = 'date_published'
|
||||||
|
fallback_date_field = 'date_modified'
|
||||||
end_date_field = 'date_published_end'
|
end_date_field = 'date_published_end'
|
||||||
publish_field = 'publish'
|
publish_field = 'publish'
|
||||||
|
|
||||||
|
@ -158,8 +159,14 @@ class GenericDateTaggedManager(TaggedFilterItem, AppHookConfigTranslatableManage
|
||||||
if queryset is None:
|
if queryset is None:
|
||||||
queryset = self.get_queryset()
|
queryset = self.get_queryset()
|
||||||
queryset = queryset.on_site()
|
queryset = queryset.on_site()
|
||||||
dates = queryset.values_list(queryset.start_date_field, flat=True)
|
dates_qs = queryset.values_list(queryset.start_date_field, queryset.fallback_date_field)
|
||||||
dates = [(x.year, x.month) for x in dates]
|
dates = []
|
||||||
|
for blog_dates in dates_qs:
|
||||||
|
if blog_dates[0]:
|
||||||
|
current_date = blog_dates[0]
|
||||||
|
else:
|
||||||
|
current_date = blog_dates[1]
|
||||||
|
dates.append((current_date.year, current_date.month,))
|
||||||
date_counter = Counter(dates)
|
date_counter = Counter(dates)
|
||||||
dates = set(dates)
|
dates = set(dates)
|
||||||
dates = sorted(dates, reverse=True)
|
dates = sorted(dates, reverse=True)
|
||||||
|
|
20
djangocms_blog/migrations/0015_auto_20160408_1849.py
Normal file
20
djangocms_blog/migrations/0015_auto_20160408_1849.py
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.9.5 on 2016-04-08 16:49
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('djangocms_blog', '0014_auto_20160215_1331'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='post',
|
||||||
|
name='date_published',
|
||||||
|
field=models.DateTimeField(blank=True, null=True, verbose_name='published since'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -111,10 +111,8 @@ class Post(KnockerModel, ModelMeta, TranslatableModel):
|
||||||
|
|
||||||
date_created = models.DateTimeField(_('created'), auto_now_add=True)
|
date_created = models.DateTimeField(_('created'), auto_now_add=True)
|
||||||
date_modified = models.DateTimeField(_('last modified'), auto_now=True)
|
date_modified = models.DateTimeField(_('last modified'), auto_now=True)
|
||||||
date_published = models.DateTimeField(_('published since'),
|
date_published = models.DateTimeField(_('published since'), null=True, blank=True)
|
||||||
default=timezone.now)
|
date_published_end = models.DateTimeField(_('published until'), null=True, blank=True)
|
||||||
date_published_end = models.DateTimeField(_('published until'), null=True,
|
|
||||||
blank=True)
|
|
||||||
publish = models.BooleanField(_('publish'), default=False)
|
publish = models.BooleanField(_('publish'), default=False)
|
||||||
categories = models.ManyToManyField('djangocms_blog.BlogCategory', verbose_name=_('category'),
|
categories = models.ManyToManyField('djangocms_blog.BlogCategory', verbose_name=_('category'),
|
||||||
related_name='blog_posts', blank=True)
|
related_name='blog_posts', blank=True)
|
||||||
|
@ -198,7 +196,18 @@ class Post(KnockerModel, ModelMeta, TranslatableModel):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.safe_translation_getter('title')
|
return self.safe_translation_getter('title')
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
Handle some auto configuration during save
|
||||||
|
"""
|
||||||
|
if self.publish and self.date_published is None:
|
||||||
|
self.date_published = timezone.now()
|
||||||
|
super(Post, self).save(*args, **kwargs)
|
||||||
|
|
||||||
def save_translation(self, translation, *args, **kwargs):
|
def save_translation(self, translation, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
Handle some auto configuration during save
|
||||||
|
"""
|
||||||
if not translation.slug and translation.title:
|
if not translation.slug and translation.title:
|
||||||
translation.slug = slugify(translation.title)
|
translation.slug = slugify(translation.title)
|
||||||
super(Post, self).save_translation(translation, *args, **kwargs)
|
super(Post, self).save_translation(translation, *args, **kwargs)
|
||||||
|
@ -211,13 +220,17 @@ class Post(KnockerModel, ModelMeta, TranslatableModel):
|
||||||
with switch_language(self, lang):
|
with switch_language(self, lang):
|
||||||
category = self.categories.first()
|
category = self.categories.first()
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
|
if self.date_published:
|
||||||
|
current_date = self.date_published
|
||||||
|
else:
|
||||||
|
current_date = self.date_created
|
||||||
urlconf = get_setting('PERMALINK_URLS')[self.app_config.url_patterns]
|
urlconf = get_setting('PERMALINK_URLS')[self.app_config.url_patterns]
|
||||||
if '<year>' in urlconf:
|
if '<year>' in urlconf:
|
||||||
kwargs['year'] = self.date_published.year
|
kwargs['year'] = current_date.year
|
||||||
if '<month>' in urlconf:
|
if '<month>' in urlconf:
|
||||||
kwargs['month'] = '%02d' % self.date_published.month
|
kwargs['month'] = '%02d' % current_date.month
|
||||||
if '<day>' in urlconf:
|
if '<day>' in urlconf:
|
||||||
kwargs['day'] = '%02d' % self.date_published.day
|
kwargs['day'] = '%02d' % current_date.day
|
||||||
if '<slug>' in urlconf:
|
if '<slug>' in urlconf:
|
||||||
kwargs['slug'] = self.safe_translation_getter('slug', language_code=lang, any_language=True) # NOQA
|
kwargs['slug'] = self.safe_translation_getter('slug', language_code=lang, any_language=True) # NOQA
|
||||||
if '<category>' in urlconf:
|
if '<category>' in urlconf:
|
||||||
|
|
|
@ -0,0 +1,231 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from south.utils import datetime_utils as datetime
|
||||||
|
from south.db import db
|
||||||
|
from south.v2 import SchemaMigration
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration):
|
||||||
|
|
||||||
|
def forwards(self, orm):
|
||||||
|
|
||||||
|
# Changing field 'Post.main_image_full'
|
||||||
|
db.alter_column(u'djangocms_blog_post', 'main_image_full_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['cmsplugin_filer_image.ThumbnailOption']))
|
||||||
|
|
||||||
|
# Changing field 'Post.date_published'
|
||||||
|
db.alter_column(u'djangocms_blog_post', 'date_published', self.gf('django.db.models.fields.DateTimeField')(null=True))
|
||||||
|
|
||||||
|
# Changing field 'Post.main_image_thumbnail'
|
||||||
|
db.alter_column(u'djangocms_blog_post', 'main_image_thumbnail_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['cmsplugin_filer_image.ThumbnailOption']))
|
||||||
|
|
||||||
|
def backwards(self, orm):
|
||||||
|
|
||||||
|
# Changing field 'Post.main_image_full'
|
||||||
|
db.alter_column(u'djangocms_blog_post', 'main_image_full_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[thumbnail_model], null=True, on_delete=models.SET_NULL))
|
||||||
|
|
||||||
|
# Changing field 'Post.date_published'
|
||||||
|
db.alter_column(u'djangocms_blog_post', 'date_published', self.gf('django.db.models.fields.DateTimeField')())
|
||||||
|
|
||||||
|
# Changing field 'Post.main_image_thumbnail'
|
||||||
|
db.alter_column(u'djangocms_blog_post', 'main_image_thumbnail_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[thumbnail_model], null=True, on_delete=models.SET_NULL))
|
||||||
|
|
||||||
|
models = {
|
||||||
|
u'auth.group': {
|
||||||
|
'Meta': {'object_name': 'Group'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'auth.permission': {
|
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
|
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'auth.user': {
|
||||||
|
'Meta': {'object_name': 'User'},
|
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
|
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||||
|
},
|
||||||
|
'cms.cmsplugin': {
|
||||||
|
'Meta': {'object_name': 'CMSPlugin'},
|
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
|
||||||
|
'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
|
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}),
|
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}),
|
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
'cms.placeholder': {
|
||||||
|
'Meta': {'object_name': 'Placeholder'},
|
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
|
||||||
|
},
|
||||||
|
u'cmsplugin_filer_image.thumbnailoption': {
|
||||||
|
'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'},
|
||||||
|
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'height': ('django.db.models.fields.IntegerField', [], {}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'upscale': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'width': ('django.db.models.fields.IntegerField', [], {})
|
||||||
|
},
|
||||||
|
u'contenttypes.contenttype': {
|
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
|
},
|
||||||
|
u'djangocms_blog.authorentriesplugin': {
|
||||||
|
'Meta': {'object_name': 'AuthorEntriesPlugin'},
|
||||||
|
'app_config': ('aldryn_apphooks_config.fields.AppHookConfigField', [], {'to': u"orm['djangocms_blog.BlogConfig']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'authors': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.User']", 'symmetrical': 'False'}),
|
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}),
|
||||||
|
'latest_posts': ('django.db.models.fields.IntegerField', [], {'default': '5'})
|
||||||
|
},
|
||||||
|
u'djangocms_blog.blogcategory': {
|
||||||
|
'Meta': {'object_name': 'BlogCategory'},
|
||||||
|
'app_config': ('aldryn_apphooks_config.fields.AppHookConfigField', [], {'to': u"orm['djangocms_blog.BlogConfig']", 'null': 'True'}),
|
||||||
|
'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['djangocms_blog.BlogCategory']", 'null': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'djangocms_blog.blogcategorytranslation': {
|
||||||
|
'Meta': {'unique_together': "[(u'language_code', u'slug'), (u'language_code', u'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'}),
|
||||||
|
u'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', [], {'max_length': '50', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'djangocms_blog.blogconfig': {
|
||||||
|
'Meta': {'object_name': 'BlogConfig'},
|
||||||
|
'app_data': ('app_data.fields.AppDataField', [], {'default': "'{}'"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'namespace': ('django.db.models.fields.CharField', [], {'default': 'None', 'unique': 'True', 'max_length': '100'}),
|
||||||
|
'type': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
|
},
|
||||||
|
u'djangocms_blog.blogconfigtranslation': {
|
||||||
|
'Meta': {'unique_together': "[(u'language_code', u'master')]", 'object_name': 'BlogConfigTranslation', 'db_table': "u'djangocms_blog_blogconfig_translation'"},
|
||||||
|
'app_title': ('django.db.models.fields.CharField', [], {'max_length': '234'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
|
||||||
|
u'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['djangocms_blog.BlogConfig']"}),
|
||||||
|
'object_name': ('django.db.models.fields.CharField', [], {'default': "u'Article'", 'max_length': '234'})
|
||||||
|
},
|
||||||
|
u'djangocms_blog.genericblogplugin': {
|
||||||
|
'Meta': {'object_name': 'GenericBlogPlugin'},
|
||||||
|
'app_config': ('aldryn_apphooks_config.fields.AppHookConfigField', [], {'to': u"orm['djangocms_blog.BlogConfig']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'djangocms_blog.latestpostsplugin': {
|
||||||
|
'Meta': {'object_name': 'LatestPostsPlugin'},
|
||||||
|
'app_config': ('aldryn_apphooks_config.fields.AppHookConfigField', [], {'to': u"orm['djangocms_blog.BlogConfig']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['djangocms_blog.BlogCategory']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}),
|
||||||
|
'latest_posts': ('django.db.models.fields.IntegerField', [], {'default': '5'})
|
||||||
|
},
|
||||||
|
u'djangocms_blog.post': {
|
||||||
|
'Meta': {'ordering': "(u'-date_published', u'-date_created')", 'object_name': 'Post'},
|
||||||
|
'app_config': ('aldryn_apphooks_config.fields.AppHookConfigField', [], {'to': u"orm['djangocms_blog.BlogConfig']", 'null': 'True'}),
|
||||||
|
'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_author'", 'null': 'True', 'to': u"orm['auth.User']"}),
|
||||||
|
'categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'blog_posts'", 'blank': 'True', 'to': u"orm['djangocms_blog.BlogCategory']"}),
|
||||||
|
'content': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "u'post_content'", 'null': 'True', 'to': "orm['cms.Placeholder']"}),
|
||||||
|
'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
|
'date_published': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'date_published_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_image'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['filer.Image']"}),
|
||||||
|
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_full'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}),
|
||||||
|
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_thumbnail'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}),
|
||||||
|
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['sites.Site']", 'symmetrical': 'False', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'djangocms_blog.posttranslation': {
|
||||||
|
'Meta': {'unique_together': "[(u'language_code', u'slug'), (u'language_code', u'master')]", 'object_name': 'PostTranslation', 'db_table': "u'djangocms_blog_post_translation'"},
|
||||||
|
'abstract': ('djangocms_text_ckeditor.fields.HTMLField', [], {'default': "u''", 'blank': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
|
||||||
|
u'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['djangocms_blog.Post']"}),
|
||||||
|
'meta_description': ('django.db.models.fields.TextField', [], {'default': "u''", 'blank': 'True'}),
|
||||||
|
'meta_keywords': ('django.db.models.fields.TextField', [], {'default': "u''", 'blank': 'True'}),
|
||||||
|
'meta_title': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '255', 'blank': 'True'}),
|
||||||
|
'post_text': ('djangocms_text_ckeditor.fields.HTMLField', [], {'default': "u''", 'blank': 'True'}),
|
||||||
|
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'blank': 'True'}),
|
||||||
|
'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||||
|
},
|
||||||
|
u'filer.file': {
|
||||||
|
'Meta': {'object_name': 'File'},
|
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'all_files'", 'null': 'True', 'to': u"orm['filer.Folder']"}),
|
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '255', 'blank': 'True'}),
|
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}),
|
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "u'polymorphic_filer.file_set+'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '40', 'blank': 'True'}),
|
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'filer.folder': {
|
||||||
|
'Meta': {'ordering': "(u'name',)", 'unique_together': "((u'parent', u'name'),)", 'object_name': 'Folder'},
|
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
u'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
|
||||||
|
u'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
|
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}),
|
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'children'", 'null': 'True', 'to': u"orm['filer.Folder']"}),
|
||||||
|
u'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
|
||||||
|
u'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
|
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
'filer.image': {
|
||||||
|
'Meta': {'object_name': 'Image'},
|
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}),
|
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'sites.site': {
|
||||||
|
'Meta': {'ordering': "(u'domain',)", 'object_name': 'Site', 'db_table': "u'django_site'"},
|
||||||
|
'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
complete_apps = ['djangocms_blog']
|
|
@ -275,6 +275,7 @@ class ModelsTest(BaseTest):
|
||||||
post = self._get_post(self._post_data[0]['en'])
|
post = self._get_post(self._post_data[0]['en'])
|
||||||
post = self._get_post(self._post_data[0]['it'], post, 'it')
|
post = self._get_post(self._post_data[0]['it'], post, 'it')
|
||||||
post.main_image = self.create_filer_image_object()
|
post.main_image = self.create_filer_image_object()
|
||||||
|
post.publish = True
|
||||||
post.save()
|
post.save()
|
||||||
post.set_current_language('en')
|
post.set_current_language('en')
|
||||||
meta_en = post.as_meta()
|
meta_en = post.as_meta()
|
||||||
|
|
|
@ -63,9 +63,9 @@ class ViewTest(BaseTest):
|
||||||
view_obj.paginate_by = 1
|
view_obj.paginate_by = 1
|
||||||
context = view_obj.get_context_data(object_list=view_obj.object_list)
|
context = view_obj.get_context_data(object_list=view_obj.object_list)
|
||||||
self.assertTrue(context['is_paginated'])
|
self.assertTrue(context['is_paginated'])
|
||||||
self.assertEqual(list(context['post_list']), [posts[2]])
|
self.assertEqual(list(context['post_list']), [posts[0]])
|
||||||
self.assertEqual(context['paginator'].count, 3)
|
self.assertEqual(context['paginator'].count, 3)
|
||||||
self.assertEqual(context['post_list'][0].title, 'Third post')
|
self.assertEqual(context['post_list'][0].title, 'First post')
|
||||||
response = view_obj.render_to_response(context)
|
response = view_obj.render_to_response(context)
|
||||||
self.assertContains(response, context['post_list'][0].get_absolute_url())
|
self.assertContains(response, context['post_list'][0].get_absolute_url())
|
||||||
self.assertEqual(getattr(request, BLOG_CURRENT_NAMESPACE), self.app_config_1)
|
self.assertEqual(getattr(request, BLOG_CURRENT_NAMESPACE), self.app_config_1)
|
||||||
|
@ -79,7 +79,7 @@ class ViewTest(BaseTest):
|
||||||
view_obj.kwargs = {}
|
view_obj.kwargs = {}
|
||||||
view_obj.object_list = view_obj.get_queryset()
|
view_obj.object_list = view_obj.get_queryset()
|
||||||
context = view_obj.get_context_data(object_list=view_obj.object_list)
|
context = view_obj.get_context_data(object_list=view_obj.object_list)
|
||||||
self.assertEqual(context['post_list'][0].title, 'Terzo post')
|
self.assertEqual(context['post_list'][0].title, 'Primo post')
|
||||||
response = view_obj.render_to_response(context)
|
response = view_obj.render_to_response(context)
|
||||||
self.assertContains(response, context['post_list'][0].get_absolute_url())
|
self.assertContains(response, context['post_list'][0].get_absolute_url())
|
||||||
blog_menu = request.toolbar.get_or_create_menu('djangocms_blog', _('Blog'))
|
blog_menu = request.toolbar.get_or_create_menu('djangocms_blog', _('Blog'))
|
||||||
|
@ -244,9 +244,9 @@ class ViewTest(BaseTest):
|
||||||
self.assertTrue(context['category'])
|
self.assertTrue(context['category'])
|
||||||
self.assertEqual(context['category'], self.category_1)
|
self.assertEqual(context['category'], self.category_1)
|
||||||
self.assertTrue(context['is_paginated'])
|
self.assertTrue(context['is_paginated'])
|
||||||
self.assertEqual(list(context['post_list']), [posts[2]])
|
self.assertEqual(list(context['post_list']), [posts[0]])
|
||||||
self.assertEqual(context['paginator'].count, 3)
|
self.assertEqual(context['paginator'].count, 3)
|
||||||
self.assertEqual(context['post_list'][0].title, 'Third post')
|
self.assertEqual(context['post_list'][0].title, 'First post')
|
||||||
|
|
||||||
request = self.get_page_request(pages[1], self.user, edit=False)
|
request = self.get_page_request(pages[1], self.user, edit=False)
|
||||||
view_obj.request = request
|
view_obj.request = request
|
||||||
|
@ -273,9 +273,9 @@ class ViewTest(BaseTest):
|
||||||
self.assertTrue(context['author'])
|
self.assertTrue(context['author'])
|
||||||
self.assertEqual(context['author'], self.user)
|
self.assertEqual(context['author'], self.user)
|
||||||
self.assertTrue(context['is_paginated'])
|
self.assertTrue(context['is_paginated'])
|
||||||
self.assertEqual(list(context['post_list']), [posts[2]])
|
self.assertEqual(list(context['post_list']), [posts[0]])
|
||||||
self.assertEqual(context['paginator'].count, 3)
|
self.assertEqual(context['paginator'].count, 3)
|
||||||
self.assertEqual(context['post_list'][0].title, 'Third post')
|
self.assertEqual(context['post_list'][0].title, 'First post')
|
||||||
|
|
||||||
request = self.get_page_request(pages[1], self.user, edit=False)
|
request = self.get_page_request(pages[1], self.user, edit=False)
|
||||||
view_obj.request = request
|
view_obj.request = request
|
||||||
|
@ -305,9 +305,9 @@ class ViewTest(BaseTest):
|
||||||
context = view_obj.get_context_data(object_list=view_obj.object_list)
|
context = view_obj.get_context_data(object_list=view_obj.object_list)
|
||||||
self.assertTrue(context['tagged_entries'], 'tag-2')
|
self.assertTrue(context['tagged_entries'], 'tag-2')
|
||||||
self.assertTrue(context['is_paginated'])
|
self.assertTrue(context['is_paginated'])
|
||||||
self.assertEqual(list(context['post_list']), [posts[1]])
|
self.assertEqual(list(context['post_list']), [posts[0]])
|
||||||
self.assertEqual(context['paginator'].count, 2)
|
self.assertEqual(context['paginator'].count, 2)
|
||||||
self.assertEqual(context['post_list'][0].title, 'Second post')
|
self.assertEqual(context['post_list'][0].title, 'First post')
|
||||||
|
|
||||||
def test_feed(self):
|
def test_feed(self):
|
||||||
posts = self.get_posts()
|
posts = self.get_posts()
|
||||||
|
|
Loading…
Reference in a new issue