diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-10 18:02:50 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-10 18:02:50 +0200 |
commit | 05ed481007604079612aa4b0f1f3bb8d4d35a6e5 (patch) | |
tree | f84171501c3d98df394c94fcc6d32cc3dd5c6539 /archaeological_finds/forms.py | |
parent | 1d5254416b11ef1010d5ac31f2a53677254c6497 (diff) | |
download | Ishtar-05ed481007604079612aa4b0f1f3bb8d4d35a6e5.tar.bz2 Ishtar-05ed481007604079612aa4b0f1f3bb8d4d35a6e5.zip |
Locks: prevent edit actions
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r-- | archaeological_finds/forms.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index f4b115492..4de4bdaf9 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -1239,6 +1239,7 @@ class FindFormSelection(CustomFormSearch): form_label = _("Find search") associated_models = {'pk': models.Find} currents = {'pk': models.Find} + pk_key = 'pk' pk = forms.IntegerField( label="", required=False, @@ -1249,6 +1250,22 @@ class FindFormSelection(CustomFormSearch): source_full=reverse_lazy('get-find-full')), validators=[valid_id(models.Find)]) + def clean(self): + pk = self.cleaned_data[self.pk_key] + if "," in pk: + pks = [k.strip() for k in pk.split(',')] + else: + pks = [pk] + for pk in pks: + try: + find = models.Find.objects.get(pk=pk) + except models.Find.DoesNotExist: + raise forms.ValidationError(_("Invalid selection.")) + if find.locked: + raise forms.ValidationError( + _("This find is locked for edition.")) + return self.cleaned_data + class FindFormSelectionWarehouseModule(FindFormSelection): pk = forms.IntegerField( |