jetzt für die Erlaubnis Prüfung Ich bin mit dieser App basierte: django-rulesWie ein Dekorateur für eine Klasse basierten Sicht schreiben - permision auf Objekt aus Sicht
aber es ist nicht mehr als ein Jahr aktualisiert jetzt und es gibt keinen Dekorateur für die "neuen" (seit Django 1.3) klassenbasierten Ansichten. Ich mag an der urls.py wie diese verwenden können:
url(r'^casos/(?P<pk>\d+)/editar/$', rules_permission_required('lawsuits.logical_check', raise_exception=True)(CaseUpdateView.as_view()), name='case_edit'),
Ich kann nicht herausfinden, wie das Objekt aus der Klasse basierte Blick aus dem Dekorateur zu bekommen. Habt ihr eine Idee? Hier ist, was ich bis jetzt habe:
from django.utils.decorators import available_attrs
def rules_permission_required(perm, queryset=None, login_url=None, raise_exception=False):
def wrapper(view_func):
@wraps(view_func, assigned=available_attrs(view_func))
def inner(request, *args, **kwargs):
#view_func is the class based view -> <function MyEditView at 0x94e54c4>
print view_func.get_object() # doesnt work
print view_func(request, *args, **kwargs).get_object() # doesnt work either
#any ideas?
if not request.user.has_perm(perm, obj=obj):
return redirect_to_login(request, login_url, raise_exception)
return view_func(request, *args, **kwargs)
return inner
return wrapper
Vielen Dank im Voraus!
Kann jemand erklären, warum eine Verbesserung der Umstellung auf Klasse basierte Ansichten, wenn es übermäßig Dinge wie diese erschwert. Scheint ein Schritt in die falsche Richtung zu sein, wenn Sie mich fragen. – fred