From 70e6b6e52354dfec3b7e435ff491a24846ad5b68 Mon Sep 17 00:00:00 2001 From: Iacopo Spalletti Date: Wed, 25 Nov 2015 10:34:50 +0100 Subject: [PATCH 1/5] Fix setting author --- djangocms_blog/cms_wizards.py | 14 ++++++++++++ tests/test_wizards.py | 43 +++++++++++++++++++++++------------ 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/djangocms_blog/cms_wizards.py b/djangocms_blog/cms_wizards.py index d308278..56e706e 100644 --- a/djangocms_blog/cms_wizards.py +++ b/djangocms_blog/cms_wizards.py @@ -1,6 +1,11 @@ # -*- coding: utf-8 -*- from __future__ import absolute_import, print_function, unicode_literals +from cms.utils.permissions import get_current_user +from django.contrib.auth import get_user_model + +from djangocms_blog.settings import get_setting + try: from cms.wizards.wizard_base import Wizard from cms.wizards.wizard_pool import wizard_pool @@ -35,6 +40,15 @@ try: class Media: js = ('admin/js/jquery.js', 'admin/js/jquery.init.js',) + def save(self, commit=True): + if not self.instance.author_id and self.instance.app_config.set_author: + if get_setting('AUTHOR_DEFAULT') is True: + user = get_current_user() + else: + user = get_user_model().objects.get(username=get_setting('AUTHOR_DEFAULT')) + self.instance.author = user + return super(PostWizardForm, self).save(commit) + class PostWizard(Wizard): pass diff --git a/tests/test_wizards.py b/tests/test_wizards.py index 3cc6901..2f755d1 100644 --- a/tests/test_wizards.py +++ b/tests/test_wizards.py @@ -5,7 +5,9 @@ import sys from distutils.version import LooseVersion import cms +from cms.utils.permissions import current_user +from djangocms_blog.settings import get_setting from .base import BaseTest try: @@ -51,21 +53,34 @@ class WizardTest(BaseTest): 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): + 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) + 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 From 395185f5fee1ce26675d4861743c8965704dd45f Mon Sep 17 00:00:00 2001 From: Iacopo Spalletti Date: Thu, 26 Nov 2015 07:54:20 +0100 Subject: [PATCH 2/5] Code refactoring --- djangocms_blog/admin.py | 8 +------- djangocms_blog/cms_wizards.py | 10 +--------- djangocms_blog/models.py | 9 +++++++++ tests/test_wizards.py | 5 ++++- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/djangocms_blog/admin.py b/djangocms_blog/admin.py index 3036c51..c2fa423 100755 --- a/djangocms_blog/admin.py +++ b/djangocms_blog/admin.py @@ -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: diff --git a/djangocms_blog/cms_wizards.py b/djangocms_blog/cms_wizards.py index 56e706e..1b09965 100644 --- a/djangocms_blog/cms_wizards.py +++ b/djangocms_blog/cms_wizards.py @@ -2,9 +2,6 @@ from __future__ import absolute_import, print_function, unicode_literals from cms.utils.permissions import get_current_user -from django.contrib.auth import get_user_model - -from djangocms_blog.settings import get_setting try: from cms.wizards.wizard_base import Wizard @@ -41,12 +38,7 @@ try: js = ('admin/js/jquery.js', 'admin/js/jquery.init.js',) def save(self, commit=True): - if not self.instance.author_id and self.instance.app_config.set_author: - if get_setting('AUTHOR_DEFAULT') is True: - user = get_current_user() - else: - user = get_user_model().objects.get(username=get_setting('AUTHOR_DEFAULT')) - self.instance.author = user + self.instance._set_default_author(get_current_user()) return super(PostWizardForm, self).save(commit) class PostWizard(Wizard): diff --git a/djangocms_blog/models.py b/djangocms_blog/models.py index 3e74137..c65ce8e 100644 --- a/djangocms_blog/models.py +++ b/djangocms_blog/models.py @@ -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 diff --git a/tests/test_wizards.py b/tests/test_wizards.py index 2f755d1..1035035 100644 --- a/tests/test_wizards.py +++ b/tests/test_wizards.py @@ -7,7 +7,6 @@ from distutils.version import LooseVersion import cms from cms.utils.permissions import current_user -from djangocms_blog.settings import get_setting from .base import BaseTest try: @@ -74,11 +73,15 @@ class WizardTest(BaseTest): 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) From 4db9bef8c6d4dfeff3a9b1a03fa1606009268e6f Mon Sep 17 00:00:00 2001 From: Iacopo Spalletti Date: Fri, 27 Nov 2015 00:14:33 +0100 Subject: [PATCH 3/5] Fix import --- tests/test_wizards.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_wizards.py b/tests/test_wizards.py index 1035035..56fe2a2 100644 --- a/tests/test_wizards.py +++ b/tests/test_wizards.py @@ -5,7 +5,6 @@ import sys from distutils.version import LooseVersion import cms -from cms.utils.permissions import current_user from .base import BaseTest @@ -48,6 +47,7 @@ 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() From e5e7415d06e60ebca9967269cc14a002ee7d2c9e Mon Sep 17 00:00:00 2001 From: Iacopo Spalletti Date: Tue, 2 Feb 2016 11:36:08 +0100 Subject: [PATCH 4/5] Update README --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 993a980..0e773d3 100644 --- a/README.rst +++ b/README.rst @@ -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: From 0e8d7f24302b659aa6355fd5b70f2b6bce6c73c8 Mon Sep 17 00:00:00 2001 From: Iacopo Spalletti Date: Sun, 7 Feb 2016 13:52:57 +0100 Subject: [PATCH 5/5] Add checkignore --- .checkignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .checkignore diff --git a/.checkignore b/.checkignore new file mode 100644 index 0000000..658579c --- /dev/null +++ b/.checkignore @@ -0,0 +1,3 @@ +tests/* +docs/* +djangocms_blog/south_migrations/*