summaryrefslogtreecommitdiff
path: root/archaeological_finds
diff options
context:
space:
mode:
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
commit7791bc97e9e8fb903b36c91d1fef250b4034e417 (patch)
tree1fb2664fcb5057f544d345974cb3e32d243c17d1 /archaeological_finds
parentf3eff0ab0b0842fb5a020128879ccd3912def9b6 (diff)
downloadIshtar-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.py25
-rw-r--r--archaeological_finds/urls.py4
-rw-r--r--archaeological_finds/views.py26
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):