diff --git a/mayan/apps/common/generics.py b/mayan/apps/common/generics.py index f77fb5504f..1ff511c2a9 100644 --- a/mayan/apps/common/generics.py +++ b/mayan/apps/common/generics.py @@ -189,9 +189,49 @@ class FormView(FormExtraKwargsMixin, ViewPermissionCheckMixin, ExtraContextMixin class MultiFormView(DjangoFormView): + prefix = None prefixes = {} - prefix = None + def _create_form(self, form_name, klass): + form_kwargs = self.get_form_kwargs(form_name) + form_create_method = 'create_%s_form' % form_name + if hasattr(self, form_create_method): + form = getattr(self, form_create_method)(**form_kwargs) + else: + form = klass(**form_kwargs) + return form + + def forms_valid(self, forms): + for form_name, form in forms.items(): + form_valid_method = '%s_form_valid' % form_name + + if hasattr(self, form_valid_method): + return getattr(self, form_valid_method)(form) + + self.all_forms_valid(forms) + + return HttpResponseRedirect(self.get_success_url()) + + def forms_invalid(self, forms): + return self.render_to_response(self.get_context_data(forms=forms)) + + def get(self, request, *args, **kwargs): + form_classes = self.get_form_classes() + forms = self.get_forms(form_classes) + return self.render_to_response(self.get_context_data(forms=forms)) + + def get_context_data(self, **kwargs): + """ + Insert the form into the context dict. + """ + if 'forms' not in kwargs: + kwargs['forms'] = self.get_forms( + form_classes=self.get_form_classes() + ) + return super(FormMixin, self).get_context_data(**kwargs) + + def get_form_classes(self): + return self.form_classes def get_form_kwargs(self, form_name): kwargs = {} @@ -206,25 +246,6 @@ class MultiFormView(DjangoFormView): return kwargs - def _create_form(self, form_name, klass): - form_kwargs = self.get_form_kwargs(form_name) - form_create_method = 'create_%s_form' % form_name - if hasattr(self, form_create_method): - form = getattr(self, form_create_method)(**form_kwargs) - else: - form = klass(**form_kwargs) - return form - - def get_context_data(self, **kwargs): - """ - Insert the form into the context dict. - """ - if 'forms' not in kwargs: - kwargs['forms'] = self.get_forms( - form_classes=self.get_form_classes() - ) - return super(FormMixin, self).get_context_data(**kwargs) - def get_forms(self, form_classes): return dict( [ @@ -244,25 +265,6 @@ class MultiFormView(DjangoFormView): def get_prefix(self, form_name): return self.prefixes.get(form_name, self.prefix) - def get(self, request, *args, **kwargs): - form_classes = self.get_form_classes() - forms = self.get_forms(form_classes) - return self.render_to_response(self.get_context_data(forms=forms)) - - def forms_valid(self, forms): - for form_name, form in forms.items(): - form_valid_method = '%s_form_valid' % form_name - - if hasattr(self, form_valid_method): - return getattr(self, form_valid_method)(form) - - self.all_forms_valid(forms) - - return HttpResponseRedirect(self.get_success_url()) - - def forms_invalid(self, forms): - return self.render_to_response(self.get_context_data(forms=forms)) - def post(self, request, *args, **kwargs): form_classes = self.get_form_classes() forms = self.get_forms(form_classes)