Source code for flask_via.routers

# -*- coding: utf-8 -*-

"""
flask_via.routers
-----------------

Base router classes and utilities.
"""

from flask_via import RoutesImporter


[docs]class BaseRouter(object): """ Base router class all routers should inherit from providing common router functionality. Example ------- .. sourcecode:: python from flask.ext.via.routers import BaseRouter class MyRouter(BaseRouter): def __init__(self, arg): ... def add_to_app(self, app): ... """
[docs] def __init__(self): """ Constructor should be overridden to accept specific arguments for the router. Raises ------ NotImplementedError If method not implemented """ raise NotImplementedError('__init__ must be overridden')
[docs] def add_to_app(self): """ Method all routers require, which handles adding the route to the application instance. Raises ------ NotImplementedError If method not implemented """ raise NotImplementedError('add_to_app must be overridden')
[docs]class Include(BaseRouter, RoutesImporter): """ Adds the ability to include routes from other modules, this can be handy when you want to break out your routes into separate files for sanity. Note ---- This is not a implementation of Flask blueprints """
[docs] def __init__(self, routes_module, routes_name='routes'): """ Constructor for Include router, taking the passed arguments and storing them on the instance. Arguments --------- routes_module : str Python dotted path to the routes module Keyword Arguments ----------------- routes_name : str (optional) Name of the variable holding the routes in the module, defaults to ``routes`` """ self.routes_module = routes_module self.routes_name = routes_name
[docs] def add_to_app(self, app, **kwargs): """ Instead of adding a route to the flask application this will include and load routes similar, same as in the :py:class:`flask_via.Via` class.abs Arguments --------- app : flask.app.Flask Flask application instance \*\*kwargs Arbitrary keyword arguments passed in to ``init_app`` """ # Get the routes routes = self.include(self.routes_module, self.routes_name) # Load the routes self.load(app, routes, **kwargs)

http://thisissoon.com

Related Topics