diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-16 14:07:30 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-16 14:07:30 +0200 |
commit | 7791bc97e9e8fb903b36c91d1fef250b4034e417 (patch) | |
tree | 1fb2664fcb5057f544d345974cb3e32d243c17d1 /archaeological_finds | |
parent | f3eff0ab0b0842fb5a020128879ccd3912def9b6 (diff) | |
download | Ishtar-7791bc97e9e8fb903b36c91d1fef250b4034e417.tar.bz2 Ishtar-7791bc97e9e8fb903b36c91d1fef250b4034e417.zip |
Allow to attach shared basket to treatment files
Diffstat (limited to 'archaeological_finds')
-rw-r--r-- | archaeological_finds/forms.py | 25 | ||||
-rw-r--r-- | archaeological_finds/urls.py | 4 | ||||
-rw-r--r-- | archaeological_finds/views.py | 26 |
3 files changed, 52 insertions, 3 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 150acfa05..284b9a76c 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -83,7 +83,7 @@ __all__ = [ 'check_value', 'check_type_field', 'check_type_not_field', 'check_treatment', 'ResultFindForm', 'ResultFindFormSet', 'FindDeletionForm', 'UpstreamFindFormSelection', 'NewFindBasketForm', - 'SelectFindBasketForm', 'FindBasketAddItemForm', + 'SelectFindBasketForm', 'SelectFindBasketWriteForm', 'FindBasketAddItemForm', 'QAFindFormSingle', 'QAFindFormMulti', 'QAFindBasketForm', 'QAFindTreatmentForm', 'QAFindbasketDuplicateForm', 'N1TreatmentForm', 'OneNTreatmentForm', 'ResultingFindForm', @@ -1646,7 +1646,28 @@ class SelectFindBasketForm(IshtarForm): self.user = kwargs.pop('user') if hasattr(self.user, 'ishtaruser'): self.user = self.user.ishtaruser - super(SelectFindBasketForm, self).__init__(*args, **kwargs) + super(SelectFindBasketWriteForm, self).__init__(*args, **kwargs) + + +class SelectFindBasketWriteForm(IshtarForm): + form_label = _(u"Basket") + associated_models = {'basket': models.FindBasket} + need_user_for_initialization = True + + basket = forms.IntegerField( + label=_(u"Basket"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-findbasket-write'), + associated_model=models.FindBasket), + validators=[valid_id(models.FindBasket)]) + + def __init__(self, *args, **kwargs): + self.user = None + if 'user' in kwargs: + self.user = kwargs.pop('user') + if hasattr(self.user, 'ishtaruser'): + self.user = self.user.ishtaruser + super(SelectFindBasketWriteForm, self).__init__(*args, **kwargs) class FindBasketAddItemForm(forms.Form): diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index b1d268a19..588777552 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -319,6 +319,10 @@ urlpatterns = [ check_rights(['change_find', 'change_own_find'])( views.autocomplete_findbasket), name='autocomplete-findbasket'), + url(r'autocomplete-findbasket-write/$', + check_rights(['change_find', 'change_own_find'])( + views.autocomplete_findbasket_write), + name='autocomplete-findbasket-write'), url(r'api/public/find/$', views.PublicFindAPI.as_view(), name='api-public-find'), diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index f440adea6..1a64f1c64 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -171,6 +171,30 @@ def autocomplete_findbasket(request, current_right=None): limit = 20 result = OrderedDict() for query in get_autocomplete_queries(request, ['label']): + query = query & models.FindBasket.get_query_owns( + request.user.ishtaruser) + objects = models.FindBasket.objects.filter(query).distinct().order_by( + 'label')[:limit] + for obj in objects: + if obj.id not in list(result.keys()): + result[obj.id] = obj.label + limit -= 1 + if not limit: + break + if not limit: + break + data = json.dumps([{'id': obj[0], 'value': obj[1]} + for obj in list(result.items())]) + return HttpResponse(data, content_type='text/plain') + + +def autocomplete_findbasket_write(request, current_right=None): + if not request.GET.get('term'): + return HttpResponse(content_type='text/plain') + + limit = 20 + result = OrderedDict() + for query in get_autocomplete_queries(request, ['label']): query = query & models.FindBasket.get_write_query_owns( request.user.ishtaruser) objects = models.FindBasket.objects.filter(query).distinct().order_by( @@ -414,7 +438,7 @@ class OwnBasket(object): class SelectBasketForManagement(IshtarMixin, LoginRequiredMixin, FormView): template_name = 'ishtar/form.html' - form_class = forms.SelectFindBasketForm + form_class = forms.SelectFindBasketWriteForm page_name = _(u"Manage items in basket") def get_form_kwargs(self): |