summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
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
commita287e2dc11534e8c66f1c6c992e2151648b00e51 (patch)
tree711769ac53ca16b982eab7a5f98239fe748ee802 /ishtar_common
parent50c0e779c3670264f2966b4659c6a656001fcf31 (diff)
downloadIshtar-a287e2dc11534e8c66f1c6c992e2151648b00e51.tar.bz2
Ishtar-a287e2dc11534e8c66f1c6c992e2151648b00e51.zip
Containers, Warehouse : multiple del - redirs
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/forms.py37
-rw-r--r--ishtar_common/wizards.py16
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):