Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
 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)
Beispiel #4
0
    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"))
Beispiel #6
0
    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"))
Beispiel #7
0
 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)
Beispiel #8
0
 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)