diff options
Diffstat (limited to 'ishtar_common/views.py')
| -rw-r--r-- | ishtar_common/views.py | 35 | 
1 files changed, 21 insertions, 14 deletions
| diff --git a/ishtar_common/views.py b/ishtar_common/views.py index eb557bb51..27b192e74 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -55,6 +55,7 @@ from xhtml2odt import xhtml2odt  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 @@ -199,11 +200,6 @@ def get_autocomplete_generic(model, extra={'available': True}):  def shortcut_menu(request): -    from archaeological_operations.models import Operation -    from archaeological_files.models import File -    from archaeological_context_records.models import ContextRecord -    from archaeological_finds.models import Find -      profile = get_current_profile()      CURRENT_ITEMS = []      if profile.files: @@ -230,8 +226,8 @@ def shortcut_menu(request):              if selected:                  cls = item.get_short_menu_class()                  new_selected_item = item -            items.append((pk, shortify(unicode(item), 60), -                          selected, item.get_short_menu_class())) +                items.append((pk, shortify(unicode(item), 60), +                              selected, item.get_short_menu_class()))          # selected is not in owns - add it to the list          if not new_selected_item and current:              try: @@ -241,18 +237,13 @@ def shortcut_menu(request):                                True, item.get_short_menu_class()))              except (model.DoesNotExist, ValueError):                  pass -        if items: -            dct['current_menu'].append((lbl, model_name, cls, items)) +        dct['current_menu'].append((lbl, model_name, cls, items))          current_selected_item = new_selected_item      return render_to_response('ishtar/blocks/shortcut_menu.html', dct,                                context_instance=RequestContext(request))  def get_current_items(request): -    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      currents = {}      for key, model in (('file', File),                         ('operation', Operation), @@ -706,6 +697,22 @@ def get_item(model, func_name, default_name, extra_request_keys=[],          for and_req in and_reqs:              query = query & and_req +        # manage hierarchic in shortcut menu +        if full == 'shortcut': +            ASSOCIATED_ITEMS = { +                Operation: (File, 'associated_file__pk'), +                ContextRecord: (Operation, 'operation__pk'), +                Find: (ContextRecord, 'base_finds__context_record__pk'), +            } +            if model in ASSOCIATED_ITEMS: +                upper_model, upper_key = ASSOCIATED_ITEMS[model] +                model_name = upper_model.SLUG +                current = model_name in request.session \ +                    and request.session[model_name] +                if current: +                    dct = {upper_key: current} +                    query = query & Q(**dct) +          items = model.objects.filter(query).distinct()          # print(items.query)          q = request_items.get('sidx') @@ -731,7 +738,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],              for idx, col in enumerate(table_cols):                  if col in model.CONTEXTUAL_TABLE_COLS[contxt]:                      table_cols[idx] = model.CONTEXTUAL_TABLE_COLS[contxt][col] -        if full == 'cached': +        if full == 'shortcut':              table_cols = ['cached_label']          # manage sort tables | 
