summaryrefslogtreecommitdiff
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
commitf298f7b27b48c604ca3ee4ffbf6b3ff5e17a1aeb (patch)
treec59be66ce93afb2c6f950f70f03cc5044f7ea406
parentc3d78fb588769075d260e26086077785813e9448 (diff)
downloadIshtar-f298f7b27b48c604ca3ee4ffbf6b3ff5e17a1aeb.tar.bz2
Ishtar-f298f7b27b48c604ca3ee4ffbf6b3ff5e17a1aeb.zip
QA add to basket: save
-rw-r--r--archaeological_finds/forms.py25
-rw-r--r--archaeological_finds/views.py4
2 files changed, 28 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")
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index 94439fa82..fd041b511 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -615,3 +615,7 @@ class QAFindBasketForm(QAItemForm):
kwargs = super(QAFindBasketForm, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
+
+ def form_valid(self, form):
+ form.save(self.items)
+ return HttpResponseRedirect(reverse("success"))