diff options
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 |
commit | 4304b4cb98d5504a5edb2011e3eb44f2d37b42bf (patch) | |
tree | c59be66ce93afb2c6f950f70f03cc5044f7ea406 /archaeological_finds/forms.py | |
parent | df09e512f1b52cf785b039e5accef6dc4b63e1f3 (diff) | |
download | Ishtar-4304b4cb98d5504a5edb2011e3eb44f2d37b42bf.tar.bz2 Ishtar-4304b4cb98d5504a5edb2011e3eb44f2d37b42bf.zip |
QA add to basket: save
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r-- | archaeological_finds/forms.py | 25 |
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") |