diff options
Diffstat (limited to 'examples/cupoftee/application.py')
| -rw-r--r-- | examples/cupoftee/application.py | 56 |
1 files changed, 35 insertions, 21 deletions
diff --git a/examples/cupoftee/application.py b/examples/cupoftee/application.py index 140b6b74..540e3f59 100644 --- a/examples/cupoftee/application.py +++ b/examples/cupoftee/application.py @@ -9,44 +9,58 @@ :license: BSD-3-Clause """ import time - -from jinja2 import Environment, PackageLoader from os import path from threading import Thread -from cupoftee.db import Database -from cupoftee.network import ServerBrowser +from jinja2 import Environment +from jinja2 import PackageLoader +from werkzeug.exceptions import HTTPException +from werkzeug.exceptions import NotFound from werkzeug.middleware.shared_data import SharedDataMiddleware -from werkzeug.wrappers import Request, Response -from werkzeug.exceptions import HTTPException, NotFound -from werkzeug.routing import Map, Rule +from werkzeug.routing import Map +from werkzeug.routing import Rule +from werkzeug.wrappers import Request +from werkzeug.wrappers import Response + +from .db import Database +from .network import ServerBrowser -templates = path.join(path.dirname(__file__), 'templates') +templates = path.join(path.dirname(__file__), "templates") pages = {} -url_map = Map([Rule('/shared/<file>', endpoint='shared')]) +url_map = Map([Rule("/shared/<file>", endpoint="shared")]) def make_app(database, interval=120): - return SharedDataMiddleware(Cup(database, interval), { - '/shared': path.join(path.dirname(__file__), 'shared') - }) + return SharedDataMiddleware( + Cup(database, interval), + {"/shared": path.join(path.dirname(__file__), "shared")}, + ) class PageMeta(type): - def __init__(cls, name, bases, d): type.__init__(cls, name, bases, d) - if d.get('url_rule') is not None: + if d.get("url_rule") is not None: pages[cls.identifier] = cls - url_map.add(Rule(cls.url_rule, endpoint=cls.identifier, - **cls.url_arguments)) + url_map.add( + Rule(cls.url_rule, endpoint=cls.identifier, **cls.url_arguments) + ) identifier = property(lambda self: self.__name__.lower()) -class Page(object): - __metaclass__ = PageMeta +def _with_metaclass(meta, *bases): + """Create a base class with a metaclass.""" + + class metaclass(type): + def __new__(metacls, name, this_bases, d): + return meta(name, bases, d) + + return type.__new__(metaclass, "temporary_class", (), {}) + + +class Page(_with_metaclass(PageMeta, object)): url_arguments = {} def __init__(self, cup, request, url_adapter): @@ -62,17 +76,16 @@ class Page(object): def render_template(self, template=None): if template is None: - template = self.__class__.identifier + '.html' + template = self.__class__.identifier + ".html" context = dict(self.__dict__) context.update(url_for=self.url_for, self=self) return self.cup.render_template(template, context) def get_response(self): - return Response(self.render_template(), mimetype='text/html') + return Response(self.render_template(), mimetype="text/html") class Cup(object): - def __init__(self, database, interval=120): self.jinja_env = Environment(loader=PackageLoader("cupoftee"), autoescape=True) self.interval = interval @@ -111,4 +124,5 @@ class Cup(object): template = self.jinja_env.get_template(name) return template.render(context) + from cupoftee.pages import MissingPage |
