def __init__(self, name=None, namespacing=False, *args, **kwargs): self.__nemo__ = None self.__instance_name__ = name if not name: self.__instance_name__ = type(self).__name__ self.__clear_routes__ = copy(type(self).CLEAR_ROUTES) self.__clear_assets__ = copy(type(self).CLEAR_ASSETS) self.__static_folder__ = copy(type(self).STATIC_FOLDER) self.__routes__ = copy(type(self).ROUTES) self.__filters__ = copy(type(self).FILTERS) self.__templates__ = copy(type(self).TEMPLATES) self.__augment__ = copy(type(self).HAS_AUGMENT_RENDER) self.__namespaced__ = namespacing if namespacing: for i in range(0, len(self.__routes__)): self.__routes__[i] = tuple( ["/{0}{1}".format(self.name, self.__routes__[i][0])] + list(self.__routes__[i])[1:] ) for i in range(0, len(self.__filters__)): self.__filters__[i] = "f_{}_{}".format(self.name, self.__filters__[i][2:]) self.__assets__ = copy(ASSETS_STRUCTURE) for css in type(self).CSS: key, value = resource_qualifier(css) self.__assets__["css"][key] = value for js in type(self).JS: key, value = resource_qualifier(js) self.__assets__["js"][key] = value for static in type(self).STATICS: key, value = resource_qualifier(static) self.__assets__["static"][key] = value
def __init__(self, name=None, app=None, api_url="/", retriever=None, base_url="/nemo", cache=None, expire=3600, plugins=None, template_folder=None, static_folder=None, static_url_path=None, urls=None, inventory=None, transform=None, urntransform=None, chunker=None, prevnext=None, css=None, js=None, templates=None, statics=None, prevent_plugin_clearing_assets=False, original_breadcrumb=True): self.name = __name__ if name: self.name = name self.prefix = base_url self.api_url = api_url if isinstance(retriever, CtsProtoRetriever): self.retriever = retriever else: self.retriever = MyCapytain.retrievers.cts5.CTS(self.api_url) if app is not None: self.app = app else: self.app = None self.api_inventory = inventory if self.api_inventory: self.retriever.inventory = self.api_inventory self.cache = None self.prevent_plugin_clearing_assets = prevent_plugin_clearing_assets if template_folder: self.template_folder = template_folder else: self.template_folder = resource_filename("flask_nemo", "data/templates") if static_folder: self.static_folder = static_folder else: self.static_folder = resource_filename("flask_nemo", "data/static") if static_url_path: self.static_url_path = static_url_path else: self.static_url_path = "/assets/nemo" self.blueprint = None if urls: self._urls = urls else: self._urls = copy(type(self).ROUTES) # Adding instance information self._urls = [tuple(list(url) + [None]) for url in self._urls] self._filters = copy(Nemo.FILTERS) self._filters = [tuple([filt] + [None]) for filt in self._filters] # Reusing self._inventory across requests self._inventory = None self.__transform = { "default": None } self.__urntransform = { "default": None } if isinstance(transform, dict): self.__transform.update(transform) if isinstance(urntransform, dict): self.__urntransform.update(urntransform) self.chunker = dict() self.chunker["default"] = type(self).default_chunker if isinstance(chunker, dict): self.chunker.update(chunker) self.prevnext = dict() self.prevnext["default"] = type(self).default_prevnext if isinstance(prevnext, dict): self.prevnext.update(prevnext) # Setting up assets self.__assets__ = copy(type(self).ASSETS) if css and isinstance(css, list): for css_s in css: filename, directory = resource_qualifier(css_s) self.__assets__["css"][filename] = directory if js and isinstance(js, list): for javascript in js: filename, directory = resource_qualifier(javascript) self.__assets__["js"][filename] = directory if statics and isinstance(statics, list): for static in statics: directory, filename = op.split(static) self.__assets__["static"][filename] = directory self.__plugins_render_views__ = [] self.__plugins__ = OrderedDict() if original_breadcrumb: self.__plugins__["nemo.breadcrumb"] = Breadcrumb(name="breadcrumb") if isinstance(plugins, list): for plugin in plugins: self.__plugins__[plugin.name] = plugin self.__templates_namespaces__ = [ ("main", self.template_folder) ] self.__instance_templates__ = [] if isinstance(templates, dict): self.__instance_templates__.extend( [(namespace, folder) for namespace, folder in templates.items()] ) self.__template_loader__ = dict() if app: self.init_app(self.app)
def __init__(self, name=None, app=None, base_url="/nemo", cache=None, resolver=None, plugins=None, template_folder=None, static_folder=None, static_url_path=None, urls=None, transform=None, chunker=None, prevnext=None, css=None, js=None, templates=None, statics=None, prevent_plugin_clearing_assets=False, original_breadcrumb=True, default_lang="eng"): self.name = __name__ if name: self.name = name self.prefix = base_url self.resolver = resolver if app is not None: self.app = app else: self.app = None self.cache = cache self.cached = list() for func in self.CACHED: self.cached.append((getattr(self, func), self)) self.prevent_plugin_clearing_assets = prevent_plugin_clearing_assets if template_folder: self.template_folder = template_folder else: self.template_folder = resource_filename("flask_nemo", "data/templates") if static_folder: self.static_folder = static_folder else: self.static_folder = resource_filename("flask_nemo", "data/static") if static_url_path: self.static_url_path = static_url_path else: self.static_url_path = "/assets/nemo" self.blueprint = None if urls: self._urls = urls else: self._urls = copy(type(self).ROUTES) # Adding instance information self._urls = [tuple(list(url) + [None]) for url in self._urls] # Adding semantic ones self._semantic_url = [(uri + "/<semantic>", endpoint, method, instance) for uri, endpoint, method, instance in self._urls if endpoint in self.SEMANTIC_ROUTES] self._filters = copy(Nemo.FILTERS) self._filters = [tuple([filt] + [None]) for filt in self._filters] # Reusing self._inventory across requests self._inventory = None self.__transform = {"default": None} self.__urntransform = {"default": None} if isinstance(transform, dict): self.__transform.update(transform) self.chunker = {"default": type(self).default_chunker} if isinstance(chunker, dict): self.chunker.update(chunker) # Setting up assets self.__assets__ = copy(type(self).ASSETS) if css and isinstance(css, list): for css_s in css: filename, directory = resource_qualifier(css_s) self.__assets__["css"][filename] = directory if js and isinstance(js, list): for javascript in js: filename, directory = resource_qualifier(javascript) self.__assets__["js"][filename] = directory if statics and isinstance(statics, list): for static in statics: directory, filename = op.split(static) self.__assets__["static"][filename] = directory self.__plugins_render_views__ = [] self.__plugins__ = OrderedDict() if original_breadcrumb: self.__plugins__["nemo.breadcrumb"] = Breadcrumb(name="breadcrumb") if isinstance(plugins, list): for plugin in plugins: self.__plugins__[plugin.name] = plugin self.__templates_namespaces__ = [("main", self.template_folder)] self.__instance_templates__ = [] if isinstance(templates, dict): self.__instance_templates__.extend([ (namespace, folder) for namespace, folder in templates.items() ]) self.__template_loader__ = dict() self.__default_lang__ = default_lang if app: self.init_app(self.app)