Skip to content

Instantly share code, notes, and snippets.

@mwcampbell
Created July 28, 2011 15:42
Show Gist options
  • Save mwcampbell/1111783 to your computer and use it in GitHub Desktop.
Save mwcampbell/1111783 to your computer and use it in GitHub Desktop.
decorator.py
def get_event(request, event_id):
event = get_object_or_404(Event, pk=event_id)
user = request.user
if not event.is_access_allowed(user):
raise PermissionDenied()
return event
def takes_event(base_argname="event"):
id_argname = "%s_id" % base_argname
def _dec(view_func):
def _preprocess(request, *args, **kwargs):
event_id = kwargs[id_argname]
event = get_event(request, event_id)
kwargs = kwargs.copy()
kwargs[base_argname] = event
del kwargs[id_argname]
return view_func(request, *args, **kwargs)
_preprocess.__doc__ = view_func.__doc__
_preprocess.__dict__ = view_func.__dict__
return _preprocess
return _dec
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment