Revision 08de868d pithos/api/util.py
b/pithos/api/util.py | ||
---|---|---|
51 | 51 |
|
52 | 52 |
from pithos.api.faults import (Fault, NotModified, BadRequest, Unauthorized, Forbidden, ItemNotFound, |
53 | 53 |
Conflict, LengthRequired, PreconditionFailed, RequestEntityTooLarge, |
54 |
RangeNotSatisfiable, ServiceUnavailable)
|
|
54 |
RangeNotSatisfiable, InternalServerError, NotImplemented)
|
|
55 | 55 |
from pithos.api.short_url import encode_url |
56 | 56 |
from pithos.backends import connect_backend |
57 | 57 |
from pithos.backends.base import NotAllowedError, QuotaError |
... | ... | |
320 | 320 |
except ValueError: |
321 | 321 |
raise BadRequest('Invalid sharing header') |
322 | 322 |
except AttributeError, e: |
323 |
raise Conflict('\n'.join(e.data) + '\n')
|
|
323 |
raise Conflict('\n'.join(e.data)) |
|
324 | 324 |
except QuotaError: |
325 | 325 |
raise RequestEntityTooLarge('Quota exceeded') |
326 | 326 |
if public is not None: |
... | ... | |
497 | 497 |
return request._req |
498 | 498 |
if 'wsgi.input' in request.environ: |
499 | 499 |
return request.environ['wsgi.input'] |
500 |
raise ServiceUnavailable('Unknown server software')
|
|
500 |
raise NotImplemented('Unknown server software')
|
|
501 | 501 |
|
502 | 502 |
MAX_UPLOAD_SIZE = 5 * (1024 * 1024 * 1024) # 5GB |
503 | 503 |
|
... | ... | |
810 | 810 |
response['Date'] = format_date_time(time()) |
811 | 811 |
|
812 | 812 |
def render_fault(request, fault): |
813 |
if settings.DEBUG or settings.TEST:
|
|
813 |
if isinstance(fault, InternalServerError) and (settings.DEBUG or settings.TEST):
|
|
814 | 814 |
fault.details = format_exc(fault) |
815 | 815 |
|
816 | 816 |
request.serialization = 'text' |
817 |
data = '\n'.join((fault.message, fault.details)) + '\n' |
|
817 |
data = fault.message + '\n' |
|
818 |
if fault.details: |
|
819 |
data += '\n' + fault.details |
|
818 | 820 |
response = HttpResponse(data, status=fault.code) |
819 | 821 |
update_response_headers(request, response) |
820 | 822 |
return response |
... | ... | |
875 | 877 |
return render_fault(request, fault) |
876 | 878 |
except BaseException, e: |
877 | 879 |
logger.exception('Unexpected error: %s' % e) |
878 |
fault = ServiceUnavailable('Unexpected error')
|
|
880 |
fault = InternalServerError('Unexpected error')
|
|
879 | 881 |
return render_fault(request, fault) |
880 | 882 |
finally: |
881 | 883 |
if getattr(request, 'backend', None) is not None: |
Also available in: Unified diff