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
: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:

View File

@ -8,7 +8,6 @@ from cms.admin.placeholderadmin import FrontendEditableAdminMixin, PlaceholderAd
from django import forms
from django.conf import settings
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.utils.six import callable
from django.utils.translation import ugettext_lazy as _
from parler.admin import TranslatableAdmin
@ -118,12 +117,7 @@ class PostAdmin(PlaceholderAdminMixin, FrontendEditableAdminMixin,
return {'slug': ('title',)}
def save_model(self, request, obj, form, change):
if not obj.author_id and obj.app_config.set_author:
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
obj._set_default_author(request.user)
super(PostAdmin, self).save_model(request, obj, form, change)
class Media:

View File

@ -1,6 +1,8 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals
from cms.utils.permissions import get_current_user
try:
from cms.wizards.wizard_base import Wizard
from cms.wizards.wizard_pool import wizard_pool
@ -35,6 +37,10 @@ try:
class Media:
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):
pass

View File

@ -5,6 +5,7 @@ from aldryn_apphooks_config.fields import AppHookConfigField
from aldryn_apphooks_config.managers.parler import AppHookConfigTranslatableManager
from cms.models import CMSPlugin, PlaceholderField
from django.conf import settings as dj_settings
from django.contrib.auth import get_user_model
from django.core.urlresolvers import reverse
from django.db import models
from django.utils import timezone
@ -254,6 +255,14 @@ class Post(ModelMeta, TranslatableModel):
def get_author(self):
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):
if self.main_image_thumbnail_id:
return self.main_image_thumbnail.as_dict

View File

@ -47,25 +47,43 @@ class WizardTest(BaseTest):
@skipIf(LooseVersion(cms.__version__) < LooseVersion('3.2'),
reason='Wizards not available for django CMS < 3.2')
def test_wizard_init(self):
from cms.utils.permissions import current_user
from cms.wizards.wizard_pool import wizard_pool
from djangocms_blog.models import Post
self.get_pages()
wizs = [entry for entry in wizard_pool.get_entries() if entry.model == Post]
for wiz in wizs:
app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk
form = wiz.form()
self.assertTrue(form.initial.get('app_config', False), app_config)
self.assertTrue(form.fields['app_config'].widget.attrs['disabled'])
with current_user(self.user_staff):
wizs = [entry for entry in wizard_pool.get_entries() if entry.model == Post]
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()
self.assertTrue(form.initial.get('app_config', False), app_config)
self.assertTrue(form.fields['app_config'].widget.attrs['disabled'])
form = wiz.form(data={
'1-title': 'title',
'1-abstract': 'abstract',
'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)
form = wiz.form(data={
'1-title': 'title{0}'.format(index),
'1-abstract': 'abstract{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_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):
# The following import should not fail in any django CMS version

View File

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