diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-15 17:15:35 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-15 17:15:35 +0200 |
commit | d7cfe41553e8fec117b9a9daa469efd3b2a022ee (patch) | |
tree | 7e5e993808eb2363ce51ad878585a4c9d081d928 /archaeological_finds/forms.py | |
parent | 6e0d12d97cea0a3962aef86b3484abbace9bc645 (diff) | |
download | Ishtar-d7cfe41553e8fec117b9a9daa469efd3b2a022ee.tar.bz2 Ishtar-d7cfe41553e8fec117b9a9daa469efd3b2a022ee.zip |
Basket in search form - autocomplete widget
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r-- | archaeological_finds/forms.py | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 2e144f96f..150acfa05 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -700,7 +700,7 @@ class QAFindBasketForm(IshtarForm): return self.fields['basket'].choices = [ (b.pk, "{} ({})".format(b.label, b.items.count())) - for b in models.FindBasket.objects.filter(user=self.user) + for b in models.FindBasket.objects.filter(user=self.user).distinct() ] def clean(self): @@ -983,7 +983,12 @@ class FindSelect(HistorySelect): cr_relation_types = forms.ChoiceField( label=_(u"Search within related context records"), choices=[]) - basket = forms.ChoiceField(label=_(u"Basket"), choices=[]) + basket = forms.IntegerField( + label=_(u"Basket"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-findbasket'), + associated_model=models.FindBasket), + validators=[valid_id(models.FindBasket)]) description = forms.CharField(label=_(u"Description")) base_finds__discovery_date__after = forms.DateField( @@ -1181,13 +1186,6 @@ class FindSelect(HistorySelect): if 'cr_relation_types' in self.fields: self.fields['cr_relation_types'].choices = CRRelationType.get_types( ) - if 'basket' in self.fields: - self.fields['basket'].choices = [('', '--')] - if self.current_user: - self.fields['basket'].choices += [ - (b.pk, b.label) for b in models.FindBasket.objects.filter( - models.FindBasket.get_query_owns(self.current_user) - ).all()] def get_input_ids(self): ids = super(FindSelect, self).get_input_ids() @@ -1635,7 +1633,6 @@ class SelectFindBasketForm(IshtarForm): associated_models = {'basket': models.FindBasket} need_user_for_initialization = True - basket = forms.ChoiceField(label=_(u"Basket"), required=True, choices=[]) basket = forms.IntegerField( label=_(u"Basket"), widget=widgets.JQueryAutoComplete( @@ -1649,19 +1646,7 @@ class SelectFindBasketForm(IshtarForm): self.user = kwargs.pop('user') if hasattr(self.user, 'ishtaruser'): self.user = self.user.ishtaruser - super(SelectFindBasketForm, self).__init__(*args, **kwargs) - if not self.user: - return - self.fields['basket'].choices = self.get_basket_choices() - - def get_basket_choices(self): - return [('', u'--')] + [ - (str(b.pk), "{} ({})".format(b.label, b.items.count())) - for b in models.FindBasket.objects.filter( - Q(user=self.user) | Q(shared_write_with=self.user) - ).distinct() - ] class FindBasketAddItemForm(forms.Form): |