summaryrefslogtreecommitdiff
path: root/archaeological_finds/forms.py
diff options
context:
space:
mode:
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
commita9295c8037f1c41e5c36c0fdf7be56b625f873a0 (patch)
tree7709cfcbbf57c3157b1287ac97e82478b3f7787a /archaeological_finds/forms.py
parent59da4acdc59a654a7f92c45c11a6597023a9e607 (diff)
downloadIshtar-a9295c8037f1c41e5c36c0fdf7be56b625f873a0.tar.bz2
Ishtar-a9295c8037f1c41e5c36c0fdf7be56b625f873a0.zip
QA find basket: use autocomplete for existing baskets
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r--archaeological_finds/forms.py35
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):