Merge pull request #130 from nephila/feature/fix_edit_post_text
Fix edit post text
This commit is contained in:
commit
95f2914a33
5 changed files with 33 additions and 27 deletions
|
@ -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',
|
||||||
},
|
},
|
||||||
|
|
|
@ -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'):
|
||||||
|
|
|
@ -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 = ()
|
|
||||||
|
|
|
@ -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 = {}
|
||||||
|
|
|
@ -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):
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue