Merge remote-tracking branch 'upstream/develop' into feature/fix_parler
This commit is contained in:
commit
2cb43d6497
|
@ -0,0 +1,3 @@
|
||||||
|
tests/*
|
||||||
|
docs/*
|
||||||
|
djangocms_blog/south_migrations/*
|
|
@ -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:
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
1
tox.ini
1
tox.ini
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue