Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)