import os import genshi.template from genshi import HTML from flask import url_for import wrpylib.wrvalidators class PylonsHelper: def url(self, filename=None, controller=None, action=None, **kwargs): if filename is not None and filename.startswith('/'): filename = filename[1:] return url_for('static', filename=filename) if controller == 'rodelbahn': if action == 'index': return url_for('index') return url_for('{}_{}'.format(controller, action), **kwargs) def wiki(self, page_title=None): """Creates a link to the specified page in the www.winterrodeln.org wiki""" if page_title is None: page_title = 'Hauptseite' return 'http://www.winterrodeln.org/wiki/' + page_title def forum(self, forum=None): """Creates a link to the specified forum. If no id is given, a general link is created.""" if forum is None: return 'http://winterrodeln-forum.org/' return 'http://winterrodeln-forum.org/viewforum.php?f={}'.format(forum) def bool(self, value): """Takes a bool value and creates a German representation""" return wrpylib.wrvalidators.opt_bool_german_to_str(value) def tristate_tuple(self, yes, no): """Takes a German representation of a tristate value""" return {(True, True): 'Teilweise', (True, False): 'Ja', (False, True): 'Nein'}.get((yes, no), None) def tristate_float(self, value): """Takes a German representation of a tristate value""" return wrpylib.wrvalidators.opt_tristate_german_to_str(value) def public_transport(self, value): return wrpylib.wrvalidators.opt_public_transport_german_to_str(value) class FakeSession: def has_key(self, key): return False def save(self): pass class TemplateContext: pass def render_genshi_template(template, **kwargs): loader = genshi.template.TemplateLoader(os.path.join(os.path.dirname(__file__), 'templates'), auto_reload=True) tmpl = loader.load(template) genshi_kwargs = {'h': PylonsHelper(), 'session': FakeSession(), 'HTML': HTML} genshi_kwargs.update(kwargs) return tmpl.generate(**genshi_kwargs).render('html', doctype='html')