I wrote a custom decorator to check whether user is in particular group of not. Please provide the feedback on optimizing code. I currently moved from Java to Django-Python so I wasn't able to optimize the logic.
Check whether student is in labsheet_collector
, assignment_collector
or fund_collector
.
def labsheet_collector(view_func):
def _wrapped_view_func(request, *args, **kwargs):
print request.user
if request.user.is_anonymous:
return redirect('/admin/') #?next=%s' % request.path)
if not (request.user.groups.filter(name='labsheet_collector').exists()) or request.user.is_superuser:
raise Http404
return view_func(request, *args, **kwargs)
return _wrapped_view_func
def assignment_collector(view_func):
def _wrapped_view_func(request, *args, **kwargs):
if request.user.is_anonymous:
return redirect('/admin/')
if not (request.user.groups.filter(name='assignment_collector').exists()) \
or request.user.is_superuser:
raise Http404
return view_func(request, *args, **kwargs)
return _wrapped_view_func
def fund_collector(view_func):
def _wrapped_view_func(request, *args, **kwargs):
if request.user.is_anonymous:
return redirect('/admin/')
if not (request.user.groups.filter(name='fund_collector').exists()) \
or request.user.is_superuser:
raise Http404
return view_func(request, *args, **kwargs)
return _wrapped_view_func