Beispiel #1
0
def ResourceEndpoint(view, serializer):
    hierachical, ids, kwargs = [], [], {'view': view, 'serializer': serializer}
    selector = r'(?P<{}_id>{})'.format(view.name, ID_RE)

    for v in view.lineage()[:-1]:
        # Just of list of resource id regexes that will be concatenated with NAMESPACER
        ids.append(r'(?P<{}_id>{})'.format(v.name, ID_RE))
        # Builds /resources/regexeforresourceid
        hierachical.extend([v.plural, r'(?P<{}_id>{})'.format(v.name, ID_RE)])

    hierachical.append(view.plural)

    hierachical = '/v1/' + '/'.join(hierachical) + ENDING.format(selector)
    id_ = '/v1/id/' + view.plural + ENDING.format(
        NAMESPACER.join(ids + [selector]))

    endpoints = [
        (hierachical, ResourceHandler, kwargs),
        (id_, ResourceHandler, kwargs),
    ]

    # If the serializer has relationships add a relationship handler
    if serializer.relations:
        relationships = '/v1/id/{}/{}/(?P<relationship>{})/?'.format(
            view.plural, NAMESPACER.join(ids + [selector]),
            '|'.join(serializer.relations.keys()))
        endpoints.append((relationships, RelationshipHandler, kwargs))

    if serializer.plugins:
        relationships = '/v1/id/{}/{}/(?P<plugin>{})/?'.format(
            view.plural, NAMESPACER.join(ids + [selector]),
            '|'.join(serializer.plugins.keys()))
        endpoints.append((relationships, PluginHandler, kwargs))

    return endpoints
 def serialize(self):
     return {
         'id': NAMESPACER.join([p.ref or p.ref for p in self._parents] + [self._instance.ref]),
         'type': self.__class__.type,
         'meta': self.meta(),
         # 'links': cls.links(request, inst, *parents),
         'attributes': self.attributes(),
         'relationships': self.relationships()
     }
Beispiel #3
0
def ResourceEndpoint(view, serializer):
    hierachical, ids, kwargs = [], [], {'view': view, 'serializer': serializer}
    selector = r'(?P<{}_id>{})'.format(view.name, ID_RE)

    for v in view.lineage()[:-1]:
        # Just of list of resource id regexes that will be concatenated with NAMESPACER
        ids.append(r'(?P<{}_id>{})'.format(v.name, ID_RE))
        # Builds /resources/regexeforresourceid
        hierachical.extend([v.plural, r'(?P<{}_id>{})'.format(v.name, ID_RE)])

    hierachical.append(view.plural)

    hierachical = '/v1/' + '/'.join(hierachical) + ENDING.format(selector)
    id_ = '/v1/id/' + view.plural + ENDING.format(NAMESPACER.join(ids + [selector]))

    endpoints = [
        (hierachical, ResourceHandler, kwargs),
        (id_, ResourceHandler, kwargs),
    ]

    # If the serializer has relationships add a relationship handler
    if serializer.relations:
        relationships = '/v1/id/{}/{}/(?P<relationship>{})/?'.format(
            view.plural,
            NAMESPACER.join(ids + [selector]),
            '|'.join(serializer.relations.keys())
        )
        endpoints.append((relationships, RelationshipHandler, kwargs))

    if serializer.plugins:
        relationships = '/v1/id/{}/{}/(?P<plugin>{})/?'.format(
            view.plural,
            NAMESPACER.join(ids + [selector]),
            '|'.join(serializer.plugins.keys())
        )
        endpoints.append((relationships, PluginHandler, kwargs))

    return endpoints
Beispiel #4
0
 def serialize(self):
     return {
         'id':
         NAMESPACER.join([p.ref or p.ref
                          for p in self._parents] + [self._instance.ref]),
         'type':
         self.__class__.type,
         'meta':
         self.meta(),
         # 'links': cls.links(request, inst, *parents),
         'attributes':
         self.attributes(),
         'relationships':
         self.relationships()
     }