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)) | 
