Revision 432fc8c3 api/util.py
b/api/util.py | ||
---|---|---|
13 | 13 |
from django.template.loader import render_to_string |
14 | 14 |
from django.utils import simplejson as json |
15 | 15 |
|
16 |
from synnefo.api.faults import *
|
|
17 |
from synnefo.db.models import *
|
|
16 |
from synnefo.api.faults import Fault, BadRequest, ItemNotFound, ServiceUnavailable
|
|
17 |
from synnefo.db.models import SynnefoUser, Image, ImageMetadata, VirtualMachine, VirtualMachineMetadata
|
|
18 | 18 |
|
19 | 19 |
import datetime |
20 | 20 |
import dateutil.parser |
... | ... | |
98 | 98 |
except Image.DoesNotExist: |
99 | 99 |
raise ItemNotFound('Image not found.') |
100 | 100 |
|
101 |
def get_image_meta(image_id, key): |
|
102 |
"""Return a ImageMetadata instance or raise ItemNotFound.""" |
|
103 |
|
|
104 |
try: |
|
105 |
image_id = int(image_id) |
|
106 |
return ImageMetadata.objects.get(meta_key=key, image=image_id) |
|
107 |
except ImageMetadata.DoesNotExist: |
|
108 |
raise ItemNotFound('Metadata key not found.') |
|
109 |
|
|
101 | 110 |
|
102 | 111 |
def get_request_dict(request): |
103 | 112 |
"""Returns data sent by the client as a python dict.""" |
... | ... | |
111 | 120 |
else: |
112 | 121 |
raise BadRequest('Unsupported Content-Type.') |
113 | 122 |
|
123 |
|
|
124 |
def render_metadata(request, metadata, use_values=False, status=200): |
|
125 |
if request.serialization == 'xml': |
|
126 |
data = render_to_string('metadata.xml', {'metadata': metadata}) |
|
127 |
else: |
|
128 |
d = {'metadata': {'values': metadata}} if use_values else {'metadata': metadata} |
|
129 |
data = json.dumps(d) |
|
130 |
return HttpResponse(data, status=status) |
|
131 |
|
|
132 |
def render_meta(request, meta, status=200): |
|
133 |
if request.serialization == 'xml': |
|
134 |
data = render_to_string('meta.xml', {'meta': meta}) |
|
135 |
else: |
|
136 |
data = json.dumps({'meta': {meta.meta_key: meta.meta_value}}) |
|
137 |
return HttpResponse(data, status=status) |
|
138 |
|
|
114 | 139 |
def render_fault(request, fault): |
115 | 140 |
if settings.DEBUG or request.META.get('SERVER_NAME') == 'testserver': |
116 | 141 |
fault.details = format_exc(fault) |
... | ... | |
132 | 157 |
|
133 | 158 |
return resp |
134 | 159 |
|
160 |
|
|
135 | 161 |
def request_serialization(request, atom_allowed=False): |
136 | 162 |
"""Return the serialization format requested. |
137 | 163 |
|
Also available in: Unified diff