0003-utils-add-check_session_roles-decorator.patch
mellon/utils.py | ||
---|---|---|
7 | 7 | |
8 | 8 |
from django.contrib import auth |
9 | 9 |
from django.contrib.auth.models import Group |
10 |
from django.contrib.auth.views import redirect_to_login |
|
10 | 11 |
from django.core.urlresolvers import reverse |
11 | 12 |
from django.template.loader import render_to_string |
12 | 13 |
from django.utils.timezone import make_aware, now, make_naive, is_aware, get_default_timezone |
... | ... | |
286 | 287 |
if role.uuid in request.session['role_uuids']: |
287 | 288 |
return True |
288 | 289 |
raise RoleNotInSession(role.auth_level) |
290 | ||
291 | ||
292 |
def check_session_roles(func): |
|
293 |
def wrapped(request, *args, **kwargs): |
|
294 |
try: |
|
295 |
return func(request, *args, **kwargs) |
|
296 |
except RoleNotInSession as e: |
|
297 |
required_auth_level = e.value |
|
298 |
next_field_value = request.get_full_path() |
|
299 |
login_url = '/login/?auth_level=%s' % required_auth_level |
|
300 |
return redirect_to_login(next_field_value, login_url) |
|
301 |
return wrapped |
|
289 |
- |