# -*- coding: utf-8 -*-
from __future__ import unicode_literals
[docs]class Namespace(object):
'''
Group resources together
:param Api api: The API on which the namespace is attached
:param str name: The namespace name
:param str description: An optionnale short description
:param str path: An optionnal prefix path. If not provided, prefix is ``/+name``
'''
def __init__(self, api, name, description=None, endpoint=None, path=None, **kwargs):
self.api = api
self.name = name
self.path = path or ('/' + name)
self.description = description
self.resources = {}
self.models = []
def add_resource(self, resource, *urls, **kwargs):
endpoint = self.api.add_resource(resource, *urls, namespace=self, **kwargs)
self.resources[endpoint] = (resource, urls, kwargs)
return endpoint
def route(self, *urls, **kwargs):
def wrapper(cls):
doc = kwargs.pop('doc', None)
if doc is not None:
self.api._handle_api_doc(cls, doc)
self.add_resource(cls, *[self.path + url for url in urls], **kwargs)
return cls
return wrapper