Skip to content

Instantly share code, notes, and snippets.

@fchevitarese
Created September 29, 2015 14:09
Show Gist options
  • Save fchevitarese/1d0ca1ac57e4ecc32034 to your computer and use it in GitHub Desktop.
Save fchevitarese/1d0ca1ac57e4ecc32034 to your computer and use it in GitHub Desktop.
decorator.py
from django.core.exceptions import PermissionDenied
from django.shortcuts import get_object_or_404
from form.models import Form
def user_permission_required(codename, form_pk_param="pk"):
def decorate(view):
def decorated(request, *args, **kwargs):
form = get_object_or_404(Form, pk=kwargs[form_pk_param])
upqs = form.userpermission_set.filter(
user=request.user,
permission__codename=codename,
)
if not upqs.exists():
raise PermissionDenied
response = view(request, *args, **kwargs)
return response
return decorated
return decorate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment