Merge remote-tracking branch 'upstream/develop' into feature/fix_parler

This commit is contained in:
Iacopo Spalletti 2016-02-07 16:26:35 +01:00
commit 2cb43d6497
7 changed files with 52 additions and 23 deletions

3
.checkignore Normal file
View File

@ -0,0 +1,3 @@
tests/*
docs/*
djangocms_blog/south_migrations/*

View File

@ -30,7 +30,7 @@ djangocms-blog
:target: https://codeclimate.com/github/nephila/djangocms-blog :target: https://codeclimate.com/github/nephila/djangocms-blog
:alt: Code Climate :alt: Code Climate
A djangoCMS 3 blog application. django CMS blog application - Support for multilingual posts, placeholders, social network meta tags and configurable apphooks.
Supported Django versions: Supported Django versions:

View File

@ -8,7 +8,6 @@ from cms.admin.placeholderadmin import FrontendEditableAdminMixin, PlaceholderAd
from django import forms from django import forms
from django.conf import settings from django.conf import settings
from django.contrib import admin from django.contrib import admin
from django.contrib.auth import get_user_model
from django.utils.six import callable from django.utils.six import callable
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from parler.admin import TranslatableAdmin from parler.admin import TranslatableAdmin
@ -118,12 +117,7 @@ class PostAdmin(PlaceholderAdminMixin, FrontendEditableAdminMixin,
return {'slug': ('title',)} return {'slug': ('title',)}
def save_model(self, request, obj, form, change): def save_model(self, request, obj, form, change):
if not obj.author_id and obj.app_config.set_author: obj._set_default_author(request.user)
if get_setting('AUTHOR_DEFAULT') is True:
user = request.user
else:
user = get_user_model().objects.get(username=get_setting('AUTHOR_DEFAULT'))
obj.author = user
super(PostAdmin, self).save_model(request, obj, form, change) super(PostAdmin, self).save_model(request, obj, form, change)
class Media: class Media:

View File

@ -1,6 +1,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
from cms.utils.permissions import get_current_user
try: try:
from cms.wizards.wizard_base import Wizard from cms.wizards.wizard_base import Wizard
from cms.wizards.wizard_pool import wizard_pool from cms.wizards.wizard_pool import wizard_pool
@ -35,6 +37,10 @@ try:
class Media: class Media:
js = ('admin/js/jquery.js', 'admin/js/jquery.init.js',) js = ('admin/js/jquery.js', 'admin/js/jquery.init.js',)
def save(self, commit=True):
self.instance._set_default_author(get_current_user())
return super(PostWizardForm, self).save(commit)
class PostWizard(Wizard): class PostWizard(Wizard):
pass pass

View File

@ -5,6 +5,7 @@ from aldryn_apphooks_config.fields import AppHookConfigField
from aldryn_apphooks_config.managers.parler import AppHookConfigTranslatableManager from aldryn_apphooks_config.managers.parler import AppHookConfigTranslatableManager
from cms.models import CMSPlugin, PlaceholderField from cms.models import CMSPlugin, PlaceholderField
from django.conf import settings as dj_settings from django.conf import settings as dj_settings
from django.contrib.auth import get_user_model
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.db import models from django.db import models
from django.utils import timezone from django.utils import timezone
@ -254,6 +255,14 @@ class Post(ModelMeta, TranslatableModel):
def get_author(self): def get_author(self):
return self.author return self.author
def _set_default_author(self, current_user):
if not self.author_id and self.app_config.set_author:
if get_setting('AUTHOR_DEFAULT') is True:
user = current_user
else:
user = get_user_model().objects.get(username=get_setting('AUTHOR_DEFAULT'))
self.author = user
def thumbnail_options(self): def thumbnail_options(self):
if self.main_image_thumbnail_id: if self.main_image_thumbnail_id:
return self.main_image_thumbnail.as_dict return self.main_image_thumbnail.as_dict

View File

@ -47,25 +47,43 @@ class WizardTest(BaseTest):
@skipIf(LooseVersion(cms.__version__) < LooseVersion('3.2'), @skipIf(LooseVersion(cms.__version__) < LooseVersion('3.2'),
reason='Wizards not available for django CMS < 3.2') reason='Wizards not available for django CMS < 3.2')
def test_wizard_init(self): def test_wizard_init(self):
from cms.utils.permissions import current_user
from cms.wizards.wizard_pool import wizard_pool from cms.wizards.wizard_pool import wizard_pool
from djangocms_blog.models import Post from djangocms_blog.models import Post
self.get_pages() self.get_pages()
wizs = [entry for entry in wizard_pool.get_entries() if entry.model == Post] with current_user(self.user_staff):
for wiz in wizs: wizs = [entry for entry in wizard_pool.get_entries() if entry.model == Post]
app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk for index, wiz in enumerate(wizs):
form = wiz.form() app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk
self.assertTrue(form.initial.get('app_config', False), app_config) form = wiz.form()
self.assertTrue(form.fields['app_config'].widget.attrs['disabled']) self.assertTrue(form.initial.get('app_config', False), app_config)
self.assertTrue(form.fields['app_config'].widget.attrs['disabled'])
form = wiz.form(data={ form = wiz.form(data={
'1-title': 'title', '1-title': 'title{0}'.format(index),
'1-abstract': 'abstract', '1-abstract': 'abstract{0}'.format(index),
'1-categories': [self.category_1.pk], '1-categories': [self.category_1.pk],
}, prefix=1) }, prefix=1)
self.assertEqual(form.default_appconfig, app_config) self.assertEqual(form.default_appconfig, app_config)
self.assertTrue(form.is_valid()) self.assertTrue(form.is_valid())
self.assertTrue(form.cleaned_data['app_config'], app_config) self.assertTrue(form.cleaned_data['app_config'], app_config)
instance = form.save()
self.assertEqual(instance.author, self.user_staff)
with self.settings(BLOG_AUTHOR_DEFAULT='normal'):
for index, wiz in enumerate(wizs):
app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk
form = wiz.form(data={
'1-title': 'title-2{0}'.format(index),
'1-abstract': 'abstract-2{0}'.format(index),
'1-categories': [self.category_1.pk],
}, prefix=1)
self.assertEqual(form.default_appconfig, app_config)
self.assertTrue(form.is_valid())
self.assertTrue(form.cleaned_data['app_config'], app_config)
instance = form.save()
self.assertEqual(instance.author, self.user_normal)
def test_wizard_import(self): def test_wizard_import(self):
# The following import should not fail in any django CMS version # The following import should not fail in any django CMS version

View File

@ -7,7 +7,6 @@ deps =
-r{toxinidir}/requirements-test.txt -r{toxinidir}/requirements-test.txt
django16: Django>=1.6,<1.7 django16: Django>=1.6,<1.7
django16: django-taggit<0.18 django16: django-taggit<0.18
django16: django-mptt<0.8
django17: Django>=1.7,<1.8 django17: Django>=1.7,<1.8
django18: Django>=1.8,<1.9 django18: Django>=1.8,<1.9
django19: Django>=1.9,<1.10 django19: Django>=1.9,<1.10