diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-11-30 19:59:16 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-11-30 19:59:37 +0100 |
commit | 8c6bd7f82712f849fb641e71cf95d5a05a26d198 (patch) | |
tree | dd60d5e07eeadd0d5172e81e0e762cd7f0d4f8b5 /archaeological_finds/forms.py | |
parent | eddd946150bcd9d4ddb05000806cc2cdfb9af60d (diff) | |
download | Ishtar-8c6bd7f82712f849fb641e71cf95d5a05a26d198.tar.bz2 Ishtar-8c6bd7f82712f849fb641e71cf95d5a05a26d198.zip |
Basket: duplicate QA
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r-- | archaeological_finds/forms.py | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index f78b4a5f3..e896b310d 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -84,7 +84,7 @@ __all__ = [ 'FindDeletionForm', 'UpstreamFindFormSelection', 'NewFindBasketForm', 'SelectFindBasketForm', 'FindBasketAddItemForm', 'QAFindFormSingle', 'QAFindFormMulti', 'QAFindBasketForm', - 'QAFindTreatmentForm', + 'QAFindTreatmentForm', 'QAFindbasketDuplicateForm', 'N1TreatmentForm', 'OneNTreatmentForm', 'ResultingFindForm', 'ResultingFindsForm', 'SingleUpstreamFindFormSelection' ] @@ -695,6 +695,35 @@ class QAFindBasketForm(IshtarForm): basket.items.add(item) +class QAFindbasketDuplicateForm(IshtarForm): + label = forms.CharField(label="", max_length=None, required=True) + + def __init__(self, *args, **kwargs): + self.user = None + if 'user' in kwargs: + self.user = kwargs.pop('user') + if hasattr(self.user, 'ishtaruser'): + self.user = self.user.ishtaruser + self.basket = kwargs.pop('items')[0] + super(QAFindbasketDuplicateForm, self).__init__(*args, **kwargs) + self.fields['label'].initial = self.basket.label + unicode( + _(u" - duplicate")) + + def clean(self): + label = self.cleaned_data['label'].strip() + if not label: + raise forms.ValidationError(_(u"A label is required.")) + if models.FindBasket.objects.filter(user=self.user, + label=label).count(): + raise forms.ValidationError(_(u"A basket with this label already " + u"exists.")) + return self.cleaned_data + + def save(self): + self.basket.duplicate(label=self.cleaned_data['label'], + ishtaruser=self.user) + + class PreservationForm(CustomForm, ManageOldType): form_label = _("Preservation") form_admin_name = _(u"Find - 030 - Preservation") |