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 |