summaryrefslogtreecommitdiff
path: root/archaeological_finds/forms.py
diff options
context:
space:
mode:
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
commit8c6bd7f82712f849fb641e71cf95d5a05a26d198 (patch)
treedd60d5e07eeadd0d5172e81e0e762cd7f0d4f8b5 /archaeological_finds/forms.py
parenteddd946150bcd9d4ddb05000806cc2cdfb9af60d (diff)
downloadIshtar-8c6bd7f82712f849fb641e71cf95d5a05a26d198.tar.bz2
Ishtar-8c6bd7f82712f849fb641e71cf95d5a05a26d198.zip
Basket: duplicate QA
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r--archaeological_finds/forms.py31
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")