def get_formset(self, request, obj=None, **kwargs): """Returns a BaseInlineFormSet class for use in admin add/change views.""" if 'fields' in kwargs: fields = kwargs.pop('fields') else: fields = flatten_fieldsets(self.get_fieldsets(request, obj)) exclude = ( tuple(self.exclude or ()) + tuple(kwargs.pop("exclude", ())) + self.get_readonly_fields(request, obj) ) defaults = { "form": self.get_form(request, obj, fields=fields), "formset": self.formset, "fk_name": self.fk_name, "fields": fields, "exclude": exclude or None, "formfield_callback": curry(self.formfield_for_dbfield, request=request), "extra": self.extra, "max_num": self.max_num, "can_delete": self.can_delete, } defaults.update(kwargs) language = self._language(request) return translatable_inlineformset_factory(language, self.parent_model, self.model, **defaults)
def get_formset(self, request, obj=None, **kwargs): """Returns a BaseInlineFormSet class for use in admin add/change views.""" if 'fields' in kwargs: fields = kwargs.pop('fields') else: fields = flatten_fieldsets(self.get_fieldsets(request, obj)) exclude = (tuple(self.exclude or ()) + tuple(kwargs.pop("exclude", ())) + self.get_readonly_fields(request, obj)) defaults = { "form": self.get_form(request, obj, fields=fields), "formset": self.formset, "fk_name": self.fk_name, "fields": fields, "exclude": exclude or None, "formfield_callback": curry(self.formfield_for_dbfield, request=request), "extra": self.extra, "max_num": self.max_num, "can_delete": self.can_delete, } defaults.update(kwargs) language = self._language(request) return translatable_inlineformset_factory(language, self.parent_model, self.model, **defaults)
def get_formset(self, request, obj=None, **kwargs): """Returns a BaseInlineFormSet class for use in admin add/change views.""" if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) else: fields = None if self.exclude is None: exclude = [] else: exclude = list(self.exclude) exclude.extend(kwargs.get("exclude", [])) exclude.extend(self.get_readonly_fields(request, obj)) # if exclude is an empty list we use None, since that's the actual # default exclude = exclude or None defaults = { "form": self.get_form(request, obj), #"formset": self.formset, "fk_name": self.fk_name, "fields": fields, "exclude": exclude, "formfield_callback": curry(self.formfield_for_dbfield, request=request), "extra": self.extra, "max_num": self.max_num, "can_delete": self.can_delete, } defaults.update(kwargs) language = self._language(request) return translatable_inlineformset_factory(language, self.parent_model, self.model, **defaults)
def get_formset(self, request, obj=None, **kwargs): """Returns a BaseInlineFormSet class for use in admin add/change views.""" if django.VERSION >= (1, 6): # From v1.6 on, using get_fieldsets is ok, as long as no 'fields' # argument was given. It allows dynamic fieldsets on admin form. if "fields" in kwargs: fields = kwargs.pop("fields") else: fields = flatten_fieldsets(self.get_fieldsets(request, obj)) else: # On previous versions, calling get_fieldsets triggers infinite recursion # and we should stick to statically declared fieldsets if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) else: fields = None exclude = tuple(self.exclude or ()) + tuple(kwargs.pop("exclude", ())) + self.get_readonly_fields(request, obj) defaults = { "form": self.get_form(request, obj, fields=fields), "formset": self.formset, "fk_name": self.fk_name, "fields": fields, "exclude": exclude or None, "formfield_callback": curry(self.formfield_for_dbfield, request=request), "extra": self.extra, "max_num": self.max_num, "can_delete": self.can_delete, } defaults.update(kwargs) language = self._language(request) return translatable_inlineformset_factory(language, self.parent_model, self.model, **defaults)
def test_create_fields_inline(self): with LanguageOverride("en"): # Fixtures (should eventually be shared with other tests) translate_mixin = TranslatableModelAdminMixin() formset = translatable_inlineformset_factory(translate_mixin._language(self.request), Normal, Related)(#self.request.POST, instance=self.object) self.assertTrue(formset.forms[0].fields.has_key("normal")) self.assertTrue(formset.forms[0].fields.has_key("translated")) self.assertTrue(formset.forms[0].fields.has_key("translated_to_translated")) self.assertFalse(formset.forms[0].fields.has_key("language_code"))
def test_create_fields_inline(self): with LanguageOverride("en"): # Fixtures (should eventually be shared with other tests) translate_mixin = TranslatableModelAdminMixin() formset = translatable_inlineformset_factory( translate_mixin._language(self.request), Normal, Related)( #self.request.POST, instance=self.object) self.assertTrue(formset.forms[0].fields.has_key("normal")) self.assertTrue(formset.forms[0].fields.has_key("translated")) self.assertTrue( formset.forms[0].fields.has_key("translated_to_translated")) self.assertFalse(formset.forms[0].fields.has_key("language_code"))
def get_formset(self, request, obj=None, **kwargs): """Returns a BaseInlineFormSet class for use in admin add/change views.""" if django.VERSION >= (1, 6): # From v1.6 on, using get_fieldsets is ok, as long as no 'fields' # argument was given. It allows dynamic fieldsets on admin form. if 'fields' in kwargs: fields = kwargs.pop('fields') else: fields = flatten_fieldsets(self.get_fieldsets(request, obj)) else: # On previous versions, calling get_fieldsets triggers infinite recursion # and we should stick to statically declared fieldsets if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) else: fields = None if self.exclude is None: exclude = [] else: exclude = list(self.exclude) exclude.extend(kwargs.get("exclude", [])) exclude.extend(self.get_readonly_fields(request, obj)) # if exclude is an empty list we use None, since that's the actual # default exclude = exclude or None defaults = { "form": self.get_form(request, obj, fields=fields), #"formset": self.formset, "fk_name": self.fk_name, "fields": fields, "exclude": exclude, "formfield_callback": curry(self.formfield_for_dbfield, request=request), "extra": self.extra, "max_num": self.max_num, "can_delete": self.can_delete, } defaults.update(kwargs) language = self._language(request) return translatable_inlineformset_factory(language, self.parent_model, self.model, **defaults)