194
195
def show(self, req, id):
195
196
# NOTE(dprince): the extensions alias is used as the 'id' for show
196
197
ext = self.extension_manager.extensions[id]
197
return self._translate(ext)
198
return dict(extension=self._translate(ext))
199
200
def delete(self, req, id):
200
201
raise faults.Fault(webob.exc.HTTPNotFound())
259
260
mapper = routes.Mapper()
262
serializer = wsgi.ResponseSerializer(
263
{'application/xml': ExtensionsXMLSerializer()})
261
264
# extended resources
262
265
for resource in ext_mgr.get_resources():
263
266
LOG.debug(_('Extended resource: %s'),
264
267
resource.collection)
265
268
mapper.resource(resource.collection, resource.collection,
266
controller=wsgi.Resource(resource.controller),
267
collection=resource.collection_actions,
268
member=resource.member_actions,
269
parent_resource=resource.parent)
269
controller=wsgi.Resource(
270
resource.controller, serializer=serializer),
271
collection=resource.collection_actions,
272
member=resource.member_actions,
273
parent_resource=resource.parent)
271
275
# extended actions
272
276
action_resources = self._action_ext_resources(application, ext_mgr,
462
466
self.parent = parent
463
467
self.collection_actions = collection_actions
464
468
self.member_actions = member_actions
471
class ExtensionsXMLSerializer(wsgi.XMLDictSerializer):
473
def show(self, ext_dict):
474
ext = self._create_ext_elem(ext_dict['extension'])
475
return self._to_xml(ext)
477
def index(self, exts_dict):
478
exts = ElementTree.Element('extensions')
479
for ext_dict in exts_dict['extensions']:
480
exts.append(self._create_ext_elem(ext_dict))
481
return self._to_xml(exts)
483
def _create_ext_elem(self, ext_dict):
484
"""Create an extension xml element from a dict."""
485
ext_elem = ElementTree.Element('extension')
486
ext_elem.set('name', ext_dict['name'])
487
ext_elem.set('namespace', ext_dict['namespace'])
488
ext_elem.set('alias', ext_dict['alias'])
489
ext_elem.set('updated', ext_dict['updated'])
490
desc = ElementTree.Element('description')
491
desc.text = ext_dict['description']
492
ext_elem.append(desc)
493
for link in ext_dict.get('links', []):
494
elem = ElementTree.Element('atom:link')
495
elem.set('rel', link['rel'])
496
elem.set('href', link['href'])
497
elem.set('type', link['type'])
498
ext_elem.append(elem)
501
def _to_xml(self, root):
502
"""Convert the xml tree object to an xml string."""
503
root.set('xmlns', wsgi.XMLNS_V11)
504
root.set('xmlns:atom', wsgi.XMLNS_ATOM)
505
return ElementTree.tostring(root, encoding='UTF-8')