def get_registry_urls(registry): urlpatterns = patterns('') for model, resource in six.iteritems(registry): name = model_name_urlize(model) name_plural = model_name_urlize(model, plural=True) list_view, detail_view = resource for endpoint in getattr(detail_view, 'ctl', []): urlpatterns += patterns('', url(r'^%s/(?P<pk>[0-9]+)/ctl/%s/$' % (name_plural, endpoint.url_name), endpoint.as_view(), name="%s-ctl-%s" % (name, endpoint.url_name)), ) urlpatterns += patterns('', url(r'^%s/$' % name_plural, list_view.as_view(), name=name if is_singleton(model) else '%s-list' % name), url(r'^%s/(?P<pk>[0-9]+)$' % name_plural, detail_view.as_view(), name="%s-detail" % name), ) # backwards compatibility rel links #236 from nodes.api import ServerDefaultDetail urlpatterns += patterns('', url(r'^server/$', ServerDefaultDetail.as_view(), name="server"), ) return urlpatterns
def get(base_view, request, format=None): relations = [('base', ApiRoot.REGISTRY_REL_PREFIX + 'base'), ('api-token-auth', ApiRoot.CONTROLLER_REL_PREFIX + 'do-get-auth-token')] # http://confine-project.eu/rel/registry like resources for model in api._registry: name = model_name_urlize(model) name = name if is_singleton(model) else '%s-list' % name rel = ApiRoot.REGISTRY_REL_PREFIX + name relations.append((name, rel)) # http://confine-project.eu/rel/controller like resources for model in api._registry_controller: name = model_name_urlize(model) name = name if is_singleton(model) else '%s-list' % name rel = ApiRoot.CONTROLLER_REL_PREFIX + name relations.append((name, rel)) headers = {'Link': link_header(relations, request)} return Response({}, headers=headers)
def get(base_view, request, format=None): relations = [ ('base', ApiRoot.REGISTRY_REL_PREFIX + 'base'), ('api-token-auth', ApiRoot.CONTROLLER_REL_PREFIX + 'do-get-auth-token') ] # http://confine-project.eu/rel/registry like resources for model in api._registry: name = model_name_urlize(model) name = name if is_singleton(model) else '%s-list' % name rel = ApiRoot.REGISTRY_REL_PREFIX + name relations.append((name, rel)) # http://confine-project.eu/rel/controller like resources for model in api._registry_controller: name = model_name_urlize(model) name = name if is_singleton(model) else '%s-list' % name rel = ApiRoot.CONTROLLER_REL_PREFIX + name relations.append((name, rel)) headers = {'Link': link_header(relations, request)} return Response({}, headers=headers)
def get(self, request, *args, **kwargs): """ Add link header """ response = super(RetrieveUpdateDestroyAPIView, self).get(request, *args, **kwargs) name = model_name_urlize(self.model) links = [ ('base', ApiRoot.REGISTRY_REL_PREFIX + 'base'), ('base_controller', ApiRoot.CONTROLLER_REL_PREFIX + 'base'), ] if not is_singleton(self.model) and getattr(self, 'list', True): resource = '%s-list' % name link = (resource, self._rel_prefix + resource) links.append(link) object_id = kwargs.get('pk') for endpoint in getattr(self, 'ctl', []): resource = '%s-ctl-%s' % (name, endpoint.url_name) links.append((resource, endpoint.rel, object_id)) response['Link'] = link_header(links, request) return response
def get_registry_urls(registry): urlpatterns = patterns("") for model, resource in six.iteritems(registry): name = model_name_urlize(model) name_plural = model_name_urlize(model, plural=True) list_view, detail_view = resource for endpoint in getattr(detail_view, "ctl", []): urlpatterns += patterns( "", url( r"^%s/(?P<pk>[0-9]+)/ctl/%s/$" % (name_plural, endpoint.url_name), endpoint.as_view(), name="%s-ctl-%s" % (name, endpoint.url_name), ), ) urlpatterns += patterns( "", url(r"^%s/$" % name_plural, list_view.as_view(), name=name if is_singleton(model) else "%s-list" % name), url(r"^%s/(?P<pk>[0-9]+)/$" % name_plural, detail_view.as_view(), name="%s-detail" % name), ) return urlpatterns