X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=unfold%2Floginrequired.py;h=afe24f3f69cafc74ba6734e337aac17b11dcad9e;hb=refs%2Fheads%2Fonelab;hp=0f46ff79916a30697c4dde15da10f06efb8f8a05;hpb=728d87eeacffb7af325a90721f05df3488f0a810;p=myslice.git diff --git a/unfold/loginrequired.py b/unfold/loginrequired.py index 0f46ff79..afe24f3f 100644 --- a/unfold/loginrequired.py +++ b/unfold/loginrequired.py @@ -4,7 +4,16 @@ from django.http import HttpResponseRedirect # for 'as_view' that we need to call in urls.py and the like from django.views.generic.base import TemplateView -from manifold.manifoldresult import ManifoldException +from manifoldapi.manifoldresult import ManifoldException + +from myslice.settings import logger + +### +# IMPORTANT NOTE +# the implementation of the classes in this file rely on redefining 'dispatch' +# for this reason if you inherit any of these, please do not redefine 'dispatch' yourself, +# but rather redefine 'get' and 'post' instead +### ########## the base class for views that require a login class LoginRequiredView (TemplateView): @@ -26,19 +35,20 @@ class LoginRequiredView (TemplateView): def logout_on_manifold_exception (fun_that_returns_httpresponse): def wrapped (request, *args, **kwds): - print 'wrapped by logout_on_manifold_exception' try: return fun_that_returns_httpresponse(request,*args, **kwds) except ManifoldException, manifold_result: # xxx we need a means to display this message to user... from django.contrib.auth import logout - logout(request) + # in some unusual cases, this might fail + try: logout(request) + except: pass return HttpResponseRedirect ('/') except Exception, e: # xxx we need to sugarcoat this error message in some error template... - print "Unexpected exception",e + logger.error("Unexpected exception {}".format(e)) import traceback - traceback.print_exc() + logger.error(traceback.format_exc()) return HttpResponseRedirect ('/') return wrapped @@ -51,3 +61,11 @@ class LoginRequiredAutoLogoutView (TemplateView): @method_decorator(login_required) def dispatch (self, request, *args, **kwds): return super(LoginRequiredAutoLogoutView,self).dispatch(request,*args,**kwds) + +# we have more and more views that actually send manifold queries +# so for these we need to protect against manifold exceptions +# even though login is not required +class FreeAccessView (TemplateView): + + def dispatch (self, request, *args, **kwds): + return super(FreeAccessView,self).dispatch(request,*args,**kwds)