summaryrefslogtreecommitdiff
path: root/ishtar_common/forms.py
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/forms.py
parent50c0e779c3670264f2966b4659c6a656001fcf31 (diff)
downloadIshtar-a287e2dc11534e8c66f1c6c992e2151648b00e51.tar.bz2
Ishtar-a287e2dc11534e8c66f1c6c992e2151648b00e51.zip
Containers, Warehouse : multiple del - redirs
Diffstat (limited to 'ishtar_common/forms.py')
-rw-r--r--ishtar_common/forms.py37
1 files changed, 18 insertions, 19 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):