diff options
Diffstat (limited to 'ishtar_common/views.py')
| -rw-r--r-- | ishtar_common/views.py | 51 | 
1 files changed, 38 insertions, 13 deletions
| 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,                  }) | 
