diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-14 12:06:49 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-14 12:06:49 +0200 |
commit | a287e2dc11534e8c66f1c6c992e2151648b00e51 (patch) | |
tree | 711769ac53ca16b982eab7a5f98239fe748ee802 /ishtar_common | |
parent | 50c0e779c3670264f2966b4659c6a656001fcf31 (diff) | |
download | Ishtar-a287e2dc11534e8c66f1c6c992e2151648b00e51.tar.bz2 Ishtar-a287e2dc11534e8c66f1c6c992e2151648b00e51.zip |
Containers, Warehouse : multiple del - redirs
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/forms.py | 37 | ||||
-rw-r--r-- | ishtar_common/wizards.py | 16 |
2 files changed, 27 insertions, 26 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 973a61228..a2e7a4fd1 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -748,7 +748,9 @@ def get_form_selection( class_name, label, key, model, base_form, get_url, not_selected_error=_(u"You should select an item."), new=False, new_message=_(u"Add a new item"), get_full_url=None, - gallery=False, map=False, base_form_select=None): + gallery=False, map=False, multi=False, base_form_select=None, + alt_pk_field=None + ): """ Generate a class selection form class_name -- name of the class @@ -774,31 +776,28 @@ def get_form_selection( widget_kwargs['gallery'] = True if map: widget_kwargs['map'] = models.profile_mapping() - attrs[key] = forms.IntegerField( + if multi: + widget_kwargs['multiple_select'] = True + field = forms.CharField + valid = models.valid_ids + else: + field = forms.IntegerField + valid = models.valid_id + + if alt_pk_field: + key = alt_pk_field + attrs[key] = field( label="", required=False, - validators=[models.valid_id(model)], + validators=[valid(model)], widget=widgets.DataTable(reverse_lazy(get_url), base_form, model, **widget_kwargs)) - def clean(self): - cleaned_data = self.cleaned_data - if self._main_key not in cleaned_data \ - or not cleaned_data[self._main_key]: - raise forms.ValidationError(self._not_selected_error) - - pk = self.cleaned_data[self._main_key] - try: - item = model.objects.get(pk=pk) - except model.DoesNotExist: - raise forms.ValidationError(_("Invalid selection.")) - if hasattr(item, "locked") and item.locked: - raise forms.ValidationError(_("This item is locked for edition.")) - return cleaned_data - attrs['clean'] = clean attrs['SEARCH_AND_SELECT'] = True if not base_form_select: base_form_select = forms.Form - return type(class_name, (base_form_select,), attrs) + if not isinstance(base_form_select, (tuple, list)): + base_form_select = (base_form_select,) + return type(class_name, base_form_select, attrs) def get_data_from_formset(data): diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index f36976684..7802f82cb 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -959,13 +959,15 @@ class Wizard(IshtarWizard): url = reverse(self.redirect_url) if self.open_created_in_redirect: url += "?open_item={}".format(obj.pk) - return HttpResponseRedirect(url) - - # force evaluation of lazy urls - wizard_done_window = str(self.wizard_done_window) - if wizard_done_window: - dct['wizard_done_window'] = wizard_done_window - res = render(self.request, self.wizard_done_template, dct) + res = HttpResponseRedirect(url) + if not return_object: + return res + else: + # force evaluation of lazy urls + wizard_done_window = str(self.wizard_done_window) + if wizard_done_window: + dct['wizard_done_window'] = wizard_done_window + res = render(self.request, self.wizard_done_template, dct) return return_object and (obj, res) or res def get_deleted(self, keys): |