Revision d0d9a3f5
b/snf-django-lib/snf_django/lib/api/__init__.py | ||
---|---|---|
62 | 62 |
|
63 | 63 |
def api_method(http_method=None, token_required=True, user_required=True, |
64 | 64 |
logger=None, format_allowed=True, astakos_url=None, |
65 |
default_serialization="json"):
|
|
65 |
serializations=None, strict_serlization=False):
|
|
66 | 66 |
"""Decorator function for views that implement an API method.""" |
67 | 67 |
if not logger: |
68 | 68 |
logger = log |
69 | 69 |
|
70 |
serializations = serializations or ['json', 'xml'] |
|
71 |
|
|
70 | 72 |
def decorator(func): |
71 | 73 |
@wraps(func) |
72 | 74 |
def wrapper(request, *args, **kwargs): |
73 | 75 |
try: |
74 | 76 |
# Get the requested serialization format |
75 |
request.serialization = get_serialization( |
|
76 |
request, format_allowed, default_serialization) |
|
77 |
serialization = get_serialization( |
|
78 |
request, format_allowed, 'json') |
|
79 |
|
|
80 |
# If guessed serialization is not supported, fallback to |
|
81 |
# the default serialization or return an API error in case |
|
82 |
# strict serialization flag is set. |
|
83 |
if not serialization in serializations: |
|
84 |
if strict_serlization: |
|
85 |
raise faults.BadRequest(("%s serialization not " |
|
86 |
"supported") % serialization) |
|
87 |
serialization = serializations[0] |
|
88 |
request.serialization = serialization |
|
77 | 89 |
|
78 | 90 |
# Check HTTP method |
79 | 91 |
if http_method and request.method != http_method: |
Also available in: Unified diff