diff options
Diffstat (limited to 'archaeological_finds')
-rw-r--r-- | archaeological_finds/forms.py | 17 | ||||
-rw-r--r-- | archaeological_finds/models_finds.py | 3 | ||||
-rw-r--r-- | archaeological_finds/views.py | 10 |
3 files changed, 29 insertions, 1 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( diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 6914ff019..9b134bceb 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -1742,8 +1742,9 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem, # own basket actions = super(Find, self).get_extra_actions(request) + is_locked = getattr(self, "locked", False) can_edit_find = self.can_do(request, 'change_find') - if can_edit_find: + if can_edit_find and not is_locked: actions += [ (reverse("find-qa-duplicate", args=[self.pk]), _("Duplicate"), "fa fa-clone", "", "", True), diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 763733bd9..e5119b9f3 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -333,6 +333,8 @@ def find_modify(request, pk): raise Http404() step = 'find-find_modification' find = q.all()[0] + if find.locked: + raise Http404() if find.base_finds.count() > 1: step = 'simplefind-find_modification' @@ -973,6 +975,14 @@ class QAFindTreatmentFormView(QAItemForm): page_name = _(u"Packaging") base_url = "find-qa-packaging" + def dispatch(self, request, *args, **kwargs): + returned = super(QAFindTreatmentFormView, self).dispatch( + request, *args, **kwargs) + for item in self.items: + if item.locked: + return HttpResponseRedirect(reverse("qa-not-available")) + return returned + def get_form_kwargs(self): kwargs = super(QAFindTreatmentFormView, self).get_form_kwargs() kwargs['user'] = self.request.user |