diff options
Diffstat (limited to 'ishtar/furnitures/views.py')
| -rw-r--r-- | ishtar/furnitures/views.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index 39c6bb66c..894a8f0cf 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -70,6 +70,9 @@ def update_current_item(request): return HttpResponse('ok') def check_permission(request, action_slug, obj_id=None): + if action_slug not in menu.items: + #! TODO + return True if obj_id: return menu.items[action_slug].is_available(request.user, obj_id) return menu.items[action_slug].can_be_available(request.user) @@ -384,6 +387,53 @@ get_contextrecord = get_item(models.ContextRecord, get_archaeologicalitem = get_item(models.Item, 'get_archaeologicalitem', 'item',) +def autocomplete_warehouse(request): + if not request.user.has_perm('furnitures.view_warehouse', models.Warehouse)\ + and not request.user.has_perm('furnitures.view_own_warehouse', + models.Warehouse) : + return HttpResponse(mimetype='text/plain') + if not request.GET.get('term'): + return HttpResponse(mimetype='text/plain') + q = request.GET.get('term') + query = Q() + for q in q.split(' '): + extra = Q(name__icontains=q) | \ + Q(warehouse_type__label__icontains=q) + query = query & extra + limit = 15 + warehouses = models.Warehouse.objects.filter(query)[:limit] + data = json.dumps([{'id':warehouse.pk, 'value':unicode(warehouse)} + for warehouse in warehouses]) + return HttpResponse(data, mimetype='text/plain') + +def new_item(model): + def func(request, parent_name='', parent_pk=''): + model_name = model._meta.object_name + if not parent_name: + parent_name = model_name.lower() + if not check_permission(request, 'add_'+model_name.lower()): + not_permitted_msg = ugettext(u"Operation not permitted.") + return HttpResponse(not_permitted_msg) + frm = getattr(ishtar_forms, model_name + 'Form') + dct = {'title':unicode(_(u'New ')) + unicode(_(model_name.lower()))} + if request.method == 'POST': + dct['form'] = frm(request.POST) + if dct['form'].is_valid(): + new_item = dct['form'].save() + dct['new_item_label'] = unicode(new_item) + dct['new_item_pk'] = new_item.pk + dct['parent_name'] = parent_name + dct['parent_pk'] = parent_pk + return render_to_response('window.html', dct, + context_instance=RequestContext(request)) + else: + dct['form'] = frm() + return render_to_response('window.html', dct, + context_instance=RequestContext(request)) + return func + +new_warehouse = new_item(models.Warehouse) + def action(request, action_slug, obj_id=None, *args, **kwargs): """ Action management |
