Merge pull request #130 from nephila/feature/fix_edit_post_text

Fix edit post text
This commit is contained in:
Iacopo Spalletti 2015-07-18 16:31:46 +02:00
commit 95f2914a33
5 changed files with 33 additions and 27 deletions

View file

@ -71,9 +71,6 @@ HELPER_SETTINGS = {
'hide_untranslated': False, 'hide_untranslated': False,
} }
}, },
'MIDDLEWARE_CLASSES': [
'django.contrib.messages.middleware.MessageMiddleware',
],
'MIGRATION_MODULES': { 'MIGRATION_MODULES': {
'cmsplugin_filer_image': 'cmsplugin_filer_image.migrations_django', 'cmsplugin_filer_image': 'cmsplugin_filer_image.migrations_django',
}, },

View file

@ -1,13 +1,14 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from copy import deepcopy
from admin_enhancer.admin import EnhancedModelAdminMixin from admin_enhancer.admin import EnhancedModelAdminMixin
from cms.admin.placeholderadmin import PlaceholderAdminMixin, FrontendEditableAdminMixin from cms.admin.placeholderadmin import PlaceholderAdminMixin, FrontendEditableAdminMixin
from copy import deepcopy from django import forms
from django.contrib import admin
from django.conf import settings from django.conf import settings
from django.contrib import admin
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from parler.admin import TranslatableAdmin from parler.admin import TranslatableAdmin
from .forms import PostAdminForm
from .models import Post, BlogCategory from .models import Post, BlogCategory
from .settings import get_setting from .settings import get_setting
@ -24,8 +25,7 @@ class BlogCategoryAdmin(EnhancedModelAdminMixin, TranslatableAdmin):
class PostAdmin(EnhancedModelAdminMixin, FrontendEditableAdminMixin, class PostAdmin(EnhancedModelAdminMixin, FrontendEditableAdminMixin,
PlaceholderAdminMixin, TranslatableAdmin, admin.ModelAdmin): PlaceholderAdminMixin, TranslatableAdmin):
form = PostAdminForm
list_display = ['title', 'author', 'date_published', 'date_published_end'] list_display = ['title', 'author', 'date_published', 'date_published_end']
date_hierarchy = 'date_published' date_hierarchy = 'date_published'
raw_id_fields = ['author'] raw_id_fields = ['author']
@ -50,6 +50,16 @@ class PostAdmin(EnhancedModelAdminMixin, FrontendEditableAdminMixin,
}), }),
] ]
def formfield_for_dbfield(self, db_field, **kwargs):
field = super(PostAdmin, self).formfield_for_dbfield(db_field, **kwargs)
if db_field.name == 'meta_description':
original_attrs = field.widget.attrs
original_attrs['maxlength'] = 160
field.widget = forms.TextInput(original_attrs)
elif db_field.name == 'meta_title':
field.max_length = 70
return field
def get_fieldsets(self, request, obj=None): def get_fieldsets(self, request, obj=None):
fsets = deepcopy(self._fieldsets) fsets = deepcopy(self._fieldsets)
if not get_setting('USE_PLACEHOLDER'): if not get_setting('USE_PLACEHOLDER'):

View file

@ -1,11 +1,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django import forms from django import forms
from django.conf import settings from django.conf import settings
from parler.forms import TranslatableModelForm
from taggit_autosuggest.widgets import TagAutoSuggest from taggit_autosuggest.widgets import TagAutoSuggest
from .models import Post
class LatestEntriesForm(forms.ModelForm): class LatestEntriesForm(forms.ModelForm):
@ -18,17 +15,3 @@ class LatestEntriesForm(forms.ModelForm):
'all': ('%sdjangocms_blog/css/%s' % (settings.STATIC_URL, 'all': ('%sdjangocms_blog/css/%s' % (settings.STATIC_URL,
'djangocms_blog_admin.css'),) 'djangocms_blog_admin.css'),)
} }
class PostAdminForm(TranslatableModelForm):
def __init__(self, *args, **kwargs):
super(PostAdminForm, self).__init__(*args, **kwargs)
original_attrs = self.fields['meta_description'].widget.attrs
original_attrs['maxlength'] = 160
self.fields['meta_description'].widget = forms.TextInput(original_attrs)
self.fields['meta_title'].max_length = 70
class Meta:
model = Post
exclude = ()

View file

@ -145,8 +145,10 @@ class BaseTest(TestCase):
request.errors = StringIO() request.errors = StringIO()
return request return request
def post_request(self, page, lang, data): def post_request(self, page, lang, data, path=None):
request = self.request_factory.post(page.get_path(lang), data) if not path:
path = page.get_path(lang)
request = self.request_factory.post(path, data)
request.current_page = page request.current_page = page
request.user = self.user request.user = self.user
request.session = {} request.session = {}

View file

@ -90,6 +90,20 @@ class AdminTest(BaseTest):
self.assertEqual(Post.objects.count(), 3) self.assertEqual(Post.objects.count(), 3)
self.assertEqual(Post.objects.get(translations__slug='third-post').author.username, 'staff') self.assertEqual(Post.objects.get(translations__slug='third-post').author.username, 'staff')
def test_admin_post_text(self):
page1, page2 = self.get_pages()
post = self._get_post(self.data['en'][0])
with self.settings(BLOG_USE_PLACEHOLDER=False):
data = {'post_text': 'ehi text'}
request = self.post_request(page1, 'en', data=data, path='/en/?edit_fields=post_text')
msg_mid = MessageMiddleware()
msg_mid.process_request(request)
post_admin = admin.site._registry[Post]
post_admin.edit_field(request, post.pk, 'en')
modified_post = Post.objects.get(pk=post.pk)
self.assertEqual(modified_post.safe_translation_getter('post_text'), data['post_text'])
class ModelsTest(BaseTest): class ModelsTest(BaseTest):