diff options
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 77 |
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)) |