From abf3f620a645b25fa01e14ec8fdda009b037bb44 Mon Sep 17 00:00:00 2001 From: Sanj Date: Mon, 4 Jul 2011 18:26:42 +0530 Subject: [PATCH] oops, forgot to add decorators.py --- edgware/utils/decorators.py | 40 +++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 edgware/utils/decorators.py diff --git a/edgware/utils/decorators.py b/edgware/utils/decorators.py new file mode 100644 index 0000000..f23f86d --- /dev/null +++ b/edgware/utils/decorators.py @@ -0,0 +1,40 @@ +import urlparse +try: + from functools import wraps +except ImportError: + from django.utils.functional import wraps # Python 2.4 fallback. +from ox.django.shortcuts import render_to_json_response +from django.utils.decorators import available_attrs + +def user_passes_test_json(test_func): + """ + Decorator for views that checks that the user passes the given test, + redirecting to the log-in page if necessary. The test should be a callable + that takes the user object and returns True if the user passes. + """ + + def decorator(view_func): + @wraps(view_func, assigned=available_attrs(view_func)) + def _wrapped_view(request, *args, **kwargs): + result = test_func(request) + if result['status'] == 'pass': + return view_func(request, *args, **kwargs) + else: + return render_to_json_response(result) + + ''' + path = request.build_absolute_uri() + # If the login url is the same scheme and net location then just + # use the path as the "next" url. + login_scheme, login_netloc = urlparse.urlparse(login_url or + settings.LOGIN_URL)[:2] + current_scheme, current_netloc = urlparse.urlparse(path)[:2] + if ((not login_scheme or login_scheme == current_scheme) and + (not login_netloc or login_netloc == current_netloc)): + path = request.get_full_path() + from django.contrib.auth.views import redirect_to_login + return redirect_to_login(path, login_url, redirect_field_name) + ''' + return _wrapped_view + return decorator +