socek

UnpackRequest - method

Jan 30th, 2014
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.03 KB | None | 0 0
  1. import inspect
  2.  
  3.  
  4. class WrongParameter(Exception):
  5.  
  6.     def __init__(self, parameter_name):
  7.         self.parameter_name = parameter_name
  8.  
  9.     def __str__(self):
  10.         return self.parameter_name
  11.  
  12.  
  13. def get_avalible_args(request):
  14.     return {
  15.         'request': request,
  16.         'POST': request.POST,
  17.         'GET': request.GET,
  18.         'matchdict': request.matchdict,
  19.         'db': request.db,
  20.         'settings': request.registry['settings'],
  21.         'session': request.session,
  22.         'user': request.user,
  23.     }
  24.  
  25.  
  26. def get_kwargs(avalible_args, fun_args):
  27.     fun_kwargs = {}
  28.     for key in fun_args:
  29.         try:
  30.             fun_kwargs[key] = avalible_args[key]
  31.         except KeyError:
  32.             raise WrongParameter(key)
  33.     return fun_kwargs
  34.  
  35.  
  36. def UnpackRequest(fun):
  37.     def wraper(request):
  38.         fun_args = inspect.getargspec(fun).args
  39.         avalible_args = get_avalible_args(request)
  40.         fun_kwargs = get_kwargs(avalible_args, fun_args)
  41.         return fun(**fun_kwargs)
  42.     return wraper
Advertisement
Add Comment
Please, Sign In to add comment