diff --git a/issue/context_processors.py b/issue/context_processors.py index 0e36523..5aadec4 100644 --- a/issue/context_processors.py +++ b/issue/context_processors.py @@ -7,3 +7,32 @@ def projects(request): return {'projects': request.projects} else: return {} + + +class PermissionChecker: + + def getattr(self, request, perm, obj=None): + if request.user.is_authenticated(): + return request.user.has_perm(perm, obj) + +class PermWrapper: + + def __init__(self, user): + self.user = user + + def __getitem__(self, perm): + return self.user.has_perm(perm) + + def __iter__(self): + raise TypeError("PermWrapper is not iterable.") + + def __contains__(self, perm): + return self[perm] + +def can_user(request): + + wrapper = PermWrapper(request.user) + + return { + 'can_user': wrapper, + } diff --git a/ponytracker/settings.py b/ponytracker/settings.py index 1d2df69..9fcbacc 100644 --- a/ponytracker/settings.py +++ b/ponytracker/settings.py @@ -109,6 +109,7 @@ TEMPLATE_CONTEXT_PROCESSORS = ( 'django.contrib.auth.context_processors.auth', 'django.core.context_processors.request', 'issue.context_processors.projects', + 'issue.context_processors.can_user', ) AUTHENTICATION_BACKENDS = (