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