summaryrefslogtreecommitdiff
path: root/ishtar/furnitures/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar/furnitures/views.py')
-rw-r--r--ishtar/furnitures/views.py50
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