summaryrefslogtreecommitdiff
path: root/archaeological_finds/forms.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-09-11 19:03:25 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-10-24 12:06:08 +0200
commit4304b4cb98d5504a5edb2011e3eb44f2d37b42bf (patch)
treec59be66ce93afb2c6f950f70f03cc5044f7ea406 /archaeological_finds/forms.py
parentdf09e512f1b52cf785b039e5accef6dc4b63e1f3 (diff)
downloadIshtar-4304b4cb98d5504a5edb2011e3eb44f2d37b42bf.tar.bz2
Ishtar-4304b4cb98d5504a5edb2011e3eb44f2d37b42bf.zip
QA add to basket: save
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r--archaeological_finds/forms.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index eb27c22cc..da3682d0d 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -460,11 +460,34 @@ class QAFindBasketForm(IshtarForm):
super(QAFindBasketForm, self).__init__(*args, **kwargs)
if not self.user:
return
- self.fields['basket'].choices = [('', '--')] + [
+ self.fields['basket'].choices = [
(b.pk, unicode(b))
for b in models.FindBasket.objects.filter(user=self.user)
]
+ def clean(self):
+ if self.cleaned_data['create_or_update'] == 'update':
+ return self.cleaned_data
+ 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, items):
+ if self.cleaned_data['create_or_update'] == 'update':
+ basket = models.FindBasket.objects.get(
+ user=self.user, pk=self.cleaned_data['basket'])
+ else:
+ label = self.cleaned_data['label'].strip()
+ basket = models.FindBasket.objects.create(
+ user=self.user, label=label)
+ for item in items:
+ basket.items.add(item)
+
class PreservationForm(CustomForm, ManageOldType):
form_label = _("Preservation")