diff options
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") |