From 2b9489fb49b8a66e16ece5470cacb9ae314556c3 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 28 Feb 2017 19:39:41 +0100 Subject: UI: explicitly remind the current pinned search above the result table (refs #3485) --- ishtar_common/views.py | 51 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 13 deletions(-) (limited to 'ishtar_common/views.py') diff --git a/ishtar_common/views.py b/ishtar_common/views.py index c9eb9fec8..a4ad130be 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -58,7 +58,8 @@ from menus import menu from archaeological_files.models import File from archaeological_operations.models import Operation from archaeological_context_records.models import ContextRecord -from archaeological_finds.models import Find, Treatment, TreatmentFile +from archaeological_finds.models import Find, Treatment, TreatmentFile, \ + FindBasket from archaeological_operations.forms import DashboardForm as DashboardFormOpe from archaeological_files.forms import DashboardForm as DashboardFormFile @@ -307,15 +308,18 @@ def shortcut_menu(request): return render_to_response('ishtar/blocks/shortcut_menu.html', dct, context_instance=RequestContext(request)) +CURRENT_ITEM_KEYS = (('file', File), + ('operation', Operation), + ('contextrecord', ContextRecord), + ('find', Find), + ('treatmentfile', TreatmentFile), + ('treatment', Treatment)) +CURRENT_ITEM_KEYS_DICT = dict(CURRENT_ITEM_KEYS) + def get_current_items(request): currents = {} - for key, model in (('file', File), - ('operation', Operation), - ('contextrecord', ContextRecord), - ('find', Find), - ('treatmentfile', TreatmentFile), - ('treatment', Treatment)): + for key, model in CURRENT_ITEM_KEYS: currents[key] = None if key in request.session and request.session[key]: try: @@ -693,6 +697,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[], q = Q(**{req_key: val}) reqs |= q and_reqs.append(reqs) + pinned_search = "" if 'submited' not in request_items and full != 'shortcut': # default search # an item is selected in the default menu @@ -700,17 +705,36 @@ def get_item(model, func_name, default_name, extra_request_keys=[], request.session[default_name]: value = request.session[default_name] if 'basket-' in value: - dct = {"basket__pk": - request.session[default_name].split('-')[-1]} + try: + dct = {"basket__pk": + request.session[default_name].split('-')[-1]} + pinned_search = unicode(FindBasket.objects.get( + pk=dct["basket__pk"])) + except FindBasket.DoesNotExist: + pass else: - dct = {"pk": request.session[default_name]} + try: + dct = {"pk": request.session[default_name]} + pinned_search = unicode(model._meta.verbose_name)\ + + u" - " + unicode( + model.objects.get(pk=dct["pk"])) + except model.DoesNotExist: + pass elif dct == (base_request or {}): # a parent item may be selected in the default menu for name, key in my_relative_session_names: if name in request.session and request.session[name] \ - and 'basket-' not in request.session[name]: - dct.update({key: request.session[name]}) - break + and 'basket-' not in request.session[name] \ + and name in CURRENT_ITEM_KEYS_DICT: + up_model = CURRENT_ITEM_KEYS_DICT[name] + try: + dct.update({key: request.session[name]}) + pinned_search = unicode(up_model._meta.verbose_name)\ + + u" - " + unicode( + up_model.objects.get(pk=dct[key])) + break + except up_model.DoesNotExist: + pass if (not dct or data_type == 'csv') \ and func_name in request.session: dct = request.session[func_name] @@ -1053,6 +1077,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[], data = json.dumps({ "records": items_nb, "rows": rows, + "pinned-search": pinned_search, "page": page_nb, "total": (items_nb / row_nb + 1) if row_nb else items_nb, }) -- cgit v1.2.3