summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-09-22 19:10:49 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-09-24 16:48:04 +0200
commitdf6ea17f4b8bb1d45fe480044af80bd19742bf80 (patch)
tree64d15df919343bcd860d2cb818b353d1ef019e18 /ishtar_common/views.py
parent4473e91231794ba9082795df9441d49e461b10db (diff)
downloadIshtar-df6ea17f4b8bb1d45fe480044af80bd19742bf80.tar.bz2
Ishtar-df6ea17f4b8bb1d45fe480044af80bd19742bf80.zip
WIP: ajaxify shortcut menu - 2
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py35
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