Revision 48c5b124 snf-pithos-app/pithos/api/util.py
b/snf-pithos-app/pithos/api/util.py | ||
---|---|---|
35 | 35 |
from datetime import datetime |
36 | 36 |
from urllib import quote, unquote |
37 | 37 |
|
38 |
from django.http import HttpResponse, Http404, HttpResponseForbidden |
|
38 |
from django.http import (HttpResponse, HttpResponseRedirect, Http404, |
|
39 |
HttpResponseForbidden) |
|
39 | 40 |
from django.template.loader import render_to_string |
40 | 41 |
from django.utils import simplejson as json |
41 | 42 |
from django.utils.http import http_date, parse_etags |
... | ... | |
64 | 65 |
RADOS_STORAGE, RADOS_POOL_BLOCKS, |
65 | 66 |
RADOS_POOL_MAPS, TRANSLATE_UUIDS, |
66 | 67 |
PUBLIC_URL_SECURITY, PUBLIC_URL_ALPHABET, |
67 |
COOKIE_NAME, BASE_HOST, UPDATE_MD5) |
|
68 |
COOKIE_NAME, BASE_HOST, UPDATE_MD5, LOGIN_URL)
|
|
68 | 69 |
from pithos.api.resources import resources |
69 | 70 |
from pithos.backends import connect_backend |
70 | 71 |
from pithos.backends.base import (NotAllowedError, QuotaError, ItemNotExists, |
... | ... | |
1125 | 1126 |
def decorator(func): |
1126 | 1127 |
@wraps(func) |
1127 | 1128 |
def wrapper(request, *args, **kwargs): |
1128 |
request.META['HTTP_X_AUTH_TOKEN'] = get_token_from_cookie(request) |
|
1129 |
token = get_token_from_cookie(request) |
|
1130 |
if token is None: |
|
1131 |
return HttpResponseRedirect('%s?next=%s' % (LOGIN_URL, |
|
1132 |
request.path)) |
|
1133 |
request.META['HTTP_X_AUTH_TOKEN'] = token |
|
1129 | 1134 |
# Get the response object |
1130 | 1135 |
response = func(request, *args, **kwargs) |
1131 |
if response.status_code == 200:
|
|
1136 |
if response.status_code in [200, 206, 304, 412, 416]:
|
|
1132 | 1137 |
return response |
1133 | 1138 |
elif response.status_code == 404: |
1134 | 1139 |
raise Http404() |
1135 | 1140 |
elif response.status_code in [401, 403]: |
1136 | 1141 |
return HttpResponseForbidden() |
1137 | 1142 |
else: |
1138 |
raise Exception(response) |
|
1143 |
# unexpected response status |
|
1144 |
raise Exception(response.status_code) |
|
1139 | 1145 |
return wrapper |
1140 | 1146 |
return decorator |
1141 | 1147 |
|
Also available in: Unified diff