summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py77
1 files changed, 66 insertions, 11 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 67b883447..6dc7e6e0d 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -64,7 +64,7 @@ from archaeological_files.forms import DashboardForm as DashboardFormFile
from ishtar_common.forms import FinalForm, FinalDeleteForm
from ishtar_common.widgets import JQueryAutoComplete
-from ishtar_common.utils import get_random_item_image_link
+from ishtar_common.utils import get_random_item_image_link, shortify
from ishtar_common import forms_common as forms
from ishtar_common import wizards
from ishtar_common.models import HistoryError, PRIVATE_FIELDS, \
@@ -210,6 +210,22 @@ def activate_own_search(request):
return HttpResponse('OK', mimetype='text/plain')
+def activate_advanced_shortcut_menu(request):
+ if not hasattr(request.user, 'ishtaruser'):
+ return HttpResponse('KO', mimetype='text/plain')
+ request.user.ishtaruser.advanced_shortcut_menu = True
+ request.user.ishtaruser.save()
+ return HttpResponse('OK', mimetype='text/plain')
+
+
+def activate_simple_shortcut_menu(request):
+ if not hasattr(request.user, 'ishtaruser'):
+ return HttpResponse('KO', mimetype='text/plain')
+ request.user.ishtaruser.advanced_shortcut_menu = False
+ request.user.ishtaruser.save()
+ return HttpResponse('OK', mimetype='text/plain')
+
+
def shortcut_menu(request):
profile = get_current_profile()
CURRENT_ITEMS = []
@@ -220,19 +236,58 @@ def shortcut_menu(request):
CURRENT_ITEMS.append((_(u"Context record"), ContextRecord))
if profile.find:
CURRENT_ITEMS.append((_(u"Find"), Find))
- dct = {'current_menu': [], 'menu': [],
- 'SHORTCUT_SEARCH': request.session['SHORTCUT_SEARCH']
- if 'SHORTCUT_SEARCH' in request.session else 'own'}
-
+ if hasattr(request.user, 'ishtaruser') and \
+ request.user.ishtaruser.advanced_shortcut_menu:
+ dct = {'current_menu': [], 'menu': [],
+ 'SHORTCUT_SEARCH': request.session['SHORTCUT_SEARCH']
+ if 'SHORTCUT_SEARCH' in request.session else 'own'}
+
+ for lbl, model in CURRENT_ITEMS:
+ model_name = model.SLUG
+ current = model_name in request.session \
+ and request.session[model_name]
+
+ dct['menu'].append((
+ lbl, model_name, current or 0,
+ JQueryAutoComplete(
+ reverse('get-' + model.SLUG + '-shortcut'),
+ model).render(
+ model.SLUG + '-shortcut', value=current,
+ attrs={'id': 'current_' + model.SLUG})))
+ return render_to_response(
+ 'ishtar/blocks/advanced_shortcut_menu.html',
+ dct, context_instance=RequestContext(request))
+ dct = {'current_menu': []}
+ current_selected_item = None
for lbl, model in CURRENT_ITEMS:
+ new_selected_item = None
model_name = model.SLUG
+ cls = ''
current = model_name in request.session and request.session[model_name]
-
- dct['menu'].append((lbl, model_name, current or 0, JQueryAutoComplete(
- reverse('get-' + model.SLUG + '-shortcut'),
- model).render(
- model.SLUG + '-shortcut', value=current,
- attrs={'id': 'current_' + model.SLUG})))
+ items = []
+ for item in model.get_owns(request.user,
+ menu_filtr=current_selected_item):
+ pk = unicode(item.pk)
+ if item.IS_BASKET:
+ pk = "basket-" + pk
+ selected = pk == current
+ 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()))
+ # selected is not in owns - add it to the list
+ if not new_selected_item and current:
+ try:
+ item = model.objects.get(pk=int(current))
+ new_selected_item = item
+ items.append((item.pk, shortify(unicode(item), 60),
+ True, item.get_short_menu_class()))
+ except (model.DoesNotExist, ValueError):
+ pass
+ if 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))