1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | def sigtransform(*Models):
import django
from django.shortcuts import get_object_or_404
def _decorator(func):
def _closure(request, *args, **kwargs):
args = list(args)
for ii, Model_and_cleaner in enumerate(Models):
# None is passed to @sigtransform to indicate "leave
# this argument alone"
if Model_and_cleaner is None:
pass
else:
Model, cleaner = Model_and_cleaner
# pk arg needs correct datatype, hence cleaner func.
args[ii] = get_object_or_404(Model, pk=cleaner(args[ii]))
return func(request, *args, **kwargs)
_closure.__name__ = func.__name__
_closure.__doc___ = func.__doc__
_closure.__module___ = func.__module__
return _closure
return _decorator
|
More like this
- Url filter middleware by limodou 4 years, 11 months ago
- TemplateZipFile by fcurella 1 month, 4 weeks ago
- View decorator to convert DoesNotExist (ObjectDoesNotExist) exceptions into Http404 exceptions by jammycakes 2 years, 4 months ago
- Resource by zvoase 3 years, 4 months ago
- Other approach of making middleware (by decorators) by diverman 11 months, 1 week ago
Comments