mirror of
https://github.com/Hopiu/django-modeltranslation.git
synced 2026-05-05 20:14:46 +00:00
Added unittest for group-fieldsets functionality in TranslationAdmin.
This commit is contained in:
parent
6c66cec35e
commit
966d5ee962
3 changed files with 70 additions and 8 deletions
|
|
@ -227,7 +227,7 @@ class ModeltranslationTest(ModeltranslationTestBase):
|
|||
self.failUnless(translator.translator)
|
||||
|
||||
# Check that all models are registered for translation
|
||||
self.assertEqual(len(translator.translator.get_registered_models()), 19)
|
||||
self.assertEqual(len(translator.translator.get_registered_models()), 20)
|
||||
|
||||
# Try to unregister a model that is not registered
|
||||
self.assertRaises(translator.NotRegistered,
|
||||
|
|
@ -1564,6 +1564,57 @@ class TranslationAdminTest(ModeltranslationTestBase):
|
|||
self.assertEqual(mab.get_form(request).base_fields.keys(),
|
||||
['titlea_de', 'titlea_en', 'titleb_de', 'titleb_en'])
|
||||
|
||||
def test_group_fieldsets(self):
|
||||
# Declared fieldsets take precedence over group_fieldsets
|
||||
class GroupFieldsetsModelAdmin(admin.TranslationAdmin):
|
||||
fieldsets = [(None, {'fields': ['title']})]
|
||||
group_fieldsets = True
|
||||
ma = GroupFieldsetsModelAdmin(models.GroupFieldsetsModel, self.site)
|
||||
fields = ['title_de', 'title_en']
|
||||
self.assertEqual(ma.get_form(request).base_fields.keys(), fields)
|
||||
self.assertEqual(ma.get_form(request, self.test_obj).base_fields.keys(), fields)
|
||||
|
||||
# Now set group_fieldsets only
|
||||
class GroupFieldsetsModelAdmin(admin.TranslationAdmin):
|
||||
group_fieldsets = True
|
||||
ma = GroupFieldsetsModelAdmin(models.GroupFieldsetsModel, self.site)
|
||||
# Only text and title are registered for translation. We expect to get
|
||||
# three fieldsets. The first which gathers all untranslated field
|
||||
# (email only) and one for each translation field (text and title).
|
||||
fieldsets = [
|
||||
('', {'fields': ['email']}),
|
||||
('text', {'classes': ('mt-fieldset',), 'fields': ['text_de', 'text_en']}),
|
||||
('title', {'classes': ('mt-fieldset',), 'fields': ['title_de', 'title_en']})
|
||||
]
|
||||
self.assertEqual(ma.get_fieldsets(request), fieldsets)
|
||||
self.assertEqual(ma.get_fieldsets(request, self.test_obj), fieldsets)
|
||||
|
||||
# Verify that other options are still taken into account
|
||||
|
||||
# Exclude an untranslated field
|
||||
class GroupFieldsetsModelAdmin(admin.TranslationAdmin):
|
||||
group_fieldsets = True
|
||||
exclude = ('email',)
|
||||
ma = GroupFieldsetsModelAdmin(models.GroupFieldsetsModel, self.site)
|
||||
fieldsets = [
|
||||
('text', {'classes': ('mt-fieldset',), 'fields': ['text_de', 'text_en']}),
|
||||
('title', {'classes': ('mt-fieldset',), 'fields': ['title_de', 'title_en']})
|
||||
]
|
||||
self.assertEqual(ma.get_fieldsets(request), fieldsets)
|
||||
self.assertEqual(ma.get_fieldsets(request, self.test_obj), fieldsets)
|
||||
|
||||
# Exclude a translation field
|
||||
class GroupFieldsetsModelAdmin(admin.TranslationAdmin):
|
||||
group_fieldsets = True
|
||||
exclude = ('text',)
|
||||
ma = GroupFieldsetsModelAdmin(models.GroupFieldsetsModel, self.site)
|
||||
fieldsets = [
|
||||
('', {'fields': ['email']}),
|
||||
('title', {'classes': ('mt-fieldset',), 'fields': ['title_de', 'title_en']})
|
||||
]
|
||||
self.assertEqual(ma.get_fieldsets(request), fieldsets)
|
||||
self.assertEqual(ma.get_fieldsets(request, self.test_obj), fieldsets)
|
||||
|
||||
|
||||
class TestManager(ModeltranslationTestBase):
|
||||
def setUp(self):
|
||||
|
|
|
|||
|
|
@ -134,6 +134,12 @@ class DataModel(models.Model):
|
|||
data = models.TextField(blank=True, null=True)
|
||||
|
||||
|
||||
class GroupFieldsetsModel(models.Model):
|
||||
title = models.CharField(max_length=255)
|
||||
text = models.TextField(blank=True, null=True)
|
||||
email = models.EmailField(blank=True, null=True)
|
||||
|
||||
|
||||
########## Manager testing
|
||||
|
||||
class ManagerTestModel(models.Model):
|
||||
|
|
|
|||
|
|
@ -3,11 +3,10 @@ from django.utils.translation import ugettext_lazy
|
|||
|
||||
from modeltranslation.translator import translator, TranslationOptions
|
||||
from modeltranslation.tests.models import (
|
||||
TestModel, FallbackModel, FallbackModel2,
|
||||
FileFieldsModel, OtherFieldsModel, AbstractModelA, AbstractModelB,
|
||||
Slugged, MetaData, Displayable, Page, RichText, RichTextPage,
|
||||
MultitableModelA, MultitableModelB, MultitableModelC,
|
||||
ManagerTestModel, CustomManagerTestModel, CustomManager2TestModel)
|
||||
TestModel, FallbackModel, FallbackModel2, FileFieldsModel, OtherFieldsModel, AbstractModelA,
|
||||
AbstractModelB, Slugged, MetaData, Displayable, Page, RichText, RichTextPage,
|
||||
MultitableModelA, MultitableModelB, MultitableModelC, ManagerTestModel, CustomManagerTestModel,
|
||||
CustomManager2TestModel, GroupFieldsetsModel)
|
||||
|
||||
|
||||
class TestTranslationOptions(TranslationOptions):
|
||||
|
|
@ -25,8 +24,7 @@ translator.register(FallbackModel, FallbackModelTranslationOptions)
|
|||
|
||||
class FallbackModel2TranslationOptions(TranslationOptions):
|
||||
fields = ('title', 'text', 'url', 'email',)
|
||||
fallback_values = {'text': ugettext_lazy('Sorry, translation is not '
|
||||
'available.')}
|
||||
fallback_values = {'text': ugettext_lazy('Sorry, translation is not available.')}
|
||||
translator.register(FallbackModel2, FallbackModel2TranslationOptions)
|
||||
|
||||
|
||||
|
|
@ -137,3 +135,10 @@ class FieldInheritanceDTranslationOptions(FieldInheritanceBTranslationOptions):
|
|||
class FieldInheritanceETranslationOptions(FieldInheritanceCTranslationOptions,
|
||||
FieldInheritanceDTranslationOptions):
|
||||
fields = ('titlee',)
|
||||
|
||||
|
||||
########## Admin testing
|
||||
|
||||
class GroupFieldsetsTranslationOptions(TranslationOptions):
|
||||
fields = ('title', 'text',)
|
||||
translator.register(GroupFieldsetsModel, GroupFieldsetsTranslationOptions)
|
||||
|
|
|
|||
Loading…
Reference in a new issue