diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-18 12:36:00 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-18 12:36:00 +0200 |
commit | 63d9dd174fc702e974ac29359585c69041582b6a (patch) | |
tree | 7709cfcbbf57c3157b1287ac97e82478b3f7787a /archaeological_finds/forms.py | |
parent | 03986acbabef1d7868ca107964b8620e7385cb44 (diff) | |
download | Ishtar-63d9dd174fc702e974ac29359585c69041582b6a.tar.bz2 Ishtar-63d9dd174fc702e974ac29359585c69041582b6a.zip |
QA find basket: use autocomplete for existing baskets
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r-- | archaeological_finds/forms.py | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 284b9a76c..aa29b57bf 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -681,11 +681,16 @@ class QAFindFormSingle(QAFindFormMulti): class QAFindBasketForm(IshtarForm): - create_or_update = forms.ChoiceField( - choices=(('create', _(u"Create")), - ('update', _(u"Update"))), initial='create') - label = forms.CharField(label="", max_length=None, required=False) - basket = forms.ChoiceField(label=_(u"Basket"), required=False, choices=[]) + qa_bf_create_or_update = forms.ChoiceField( + choices=(('create', _("Create")), + ('update', _("Update"))), initial='create') + qa_bf_label = forms.CharField(label="", max_length=None, required=False) + qa_bf_basket = forms.IntegerField( + label=_("Basket"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-findbasket-write'), + associated_model=models.FindBasket), + validators=[valid_id(models.FindBasket)], required=False) def __init__(self, *args, **kwargs): self.user = None @@ -696,20 +701,14 @@ class QAFindBasketForm(IshtarForm): self.items = kwargs.pop('items') super(QAFindBasketForm, self).__init__(*args, **kwargs) - if not self.user: - return - self.fields['basket'].choices = [ - (b.pk, "{} ({})".format(b.label, b.items.count())) - for b in models.FindBasket.objects.filter(user=self.user).distinct() - ] def clean(self): - if self.cleaned_data['create_or_update'] == 'update': - if not self.cleaned_data['basket']: + if self.cleaned_data['qa_bf_create_or_update'] == 'update': + if not self.cleaned_data['qa_bf_basket']: raise forms.ValidationError( _(u"On update, you have to select a basket.")) return self.cleaned_data - label = self.cleaned_data['label'].strip() + label = self.cleaned_data['qa_bf_label'].strip() if not label: raise forms.ValidationError(_(u"A label is required.")) if models.FindBasket.objects.filter(user=self.user, @@ -719,11 +718,11 @@ class QAFindBasketForm(IshtarForm): return self.cleaned_data def save(self, items): - if self.cleaned_data['create_or_update'] == 'update': + if self.cleaned_data['qa_bf_create_or_update'] == 'update': basket = models.FindBasket.objects.get( - user=self.user, pk=self.cleaned_data['basket']) + user=self.user, pk=self.cleaned_data['qa_bf_basket']) else: - label = self.cleaned_data['label'].strip() + label = self.cleaned_data['qa_bf_label'].strip() basket = models.FindBasket.objects.create( user=self.user, label=label) for item in items: @@ -1646,7 +1645,7 @@ class SelectFindBasketForm(IshtarForm): self.user = kwargs.pop('user') if hasattr(self.user, 'ishtaruser'): self.user = self.user.ishtaruser - super(SelectFindBasketWriteForm, self).__init__(*args, **kwargs) + super(SelectFindBasketForm, self).__init__(*args, **kwargs) class SelectFindBasketWriteForm(IshtarForm): |