"Genshi>=0.4",
"lxml>=2.2",
"Babel>=0.9",
+ "paginate>=0.5.6",
"wrpylib>=0.6.0",
],
package_data={'wradmin': ['i18n/*/LC_MESSAGES/*.mo']},
# FLASK_APP=wradmin WRADMIN_SETTINGS=production.cfg python3 -m flask run
from flask import Flask, send_from_directory, abort, g
from sqlalchemy.engine import create_engine
+import wradmin.model
from wradmin.genshi import render_genshi_template
+from wradmin.controllers.rodelbahn import RodelbahnController
app = Flask(__name__)
"""
if not hasattr(g, 'db'):
g.db_engine = create_engine(app.config['DATABASE_URI'])
+ wradmin.model.init_model(g.db_engine)
g.db = g.db_engine.connect()
return g.db
@app.route("/rodelbahn/list")
def rodelbahn_list():
+ get_db()
+ return RodelbahnController().list()
+
+
+@app.route("/rodelbahn/update")
+def rodelbahn_update():
+ pass
+
+
+@app.route("/rodelbahn/view/<int:id>")
+def rodelbahn_view(id):
+ pass
+
+
+@app.route("/rodelbahn/update_regioncache")
+def rodelbahn_update_regioncache():
pass
+++ /dev/null
-import cgi
-
-from paste.urlparser import PkgResourcesParser
-from pylons import request
-from pylons.controllers.util import forward
-from pylons.middleware import error_document_template
-from webhelpers.html.builder import literal
-
-from wradmin.lib.base import BaseController
-
-class ErrorController(BaseController):
-
- """Generates error documents as and when they are required.
-
- The ErrorDocuments middleware forwards to ErrorController when error
- related status codes are returned from the application.
-
- This behaviour can be altered by changing the parameters to the
- ErrorDocuments middleware in your config/middleware.py file.
-
- """
-
- def document(self):
- """Render the error document"""
- resp = request.environ.get('pylons.original_response')
- content = literal(resp.body) or cgi.escape(request.GET.get('message', ''))
- page = error_document_template % \
- dict(prefix=request.environ.get('SCRIPT_NAME', ''),
- code=cgi.escape(request.GET.get('code', str(resp.status_int))),
- message=content)
- return page
-
- def img(self, id):
- """Serve Pylons' stock images"""
- return self._serve_file('/'.join(['media/img', id]))
-
- def style(self, id):
- """Serve Pylons' stock stylesheets"""
- return self._serve_file('/'.join(['media/style', id]))
-
- def _serve_file(self, path):
- """Call Paste's FileApp (a WSGI application) to serve the file
- at the specified path
- """
- request.environ['PATH_INFO'] = '/%s' % path
- return forward(PkgResourcesParser('pylons', 'pylons'))
#!/usr/bin/python3.4
-import logging
-
-from pylons import request, response, session, url, tmpl_context as c
-from pylons.controllers.util import abort, redirect
-import webhelpers.paginate as paginate
-
-from wradmin.lib.base import BaseController, render
-import wradmin.model as model
+#from pylons import request, response, session, url, tmpl_context as c
+#from pylons.controllers.util import abort, redirect
+from flask import request
+import paginate
import sqlalchemy as sa
-import formencode
-import re
import wrpylib.wrmwmarkup
import wrpylib.wrmwcache
import wrpylib.mwmarkup
-from weberror import collector # Prevent a bug of weberror # See https://bitbucket.org/bbangert/weberror/issue/3/nameerror-global-name-fallback_encoding-is-not
-collector.FALLBACK_ENCODING = 'utf-8' # --"--
-
-log = logging.getLogger(__name__)
+import wradmin.model as model
+from wradmin.genshi import render_genshi_template
-class RodelbahnController(BaseController):
+class TemplateContext:
+ pass
- def index(self):
- return render('index.html')
+class RodelbahnController:
def list(self):
- "Lists all sled runs"
+ """Lists all sled runs"""
q = model.meta.Session.query(model.WrSledrunCache)
q = q.order_by(model.WrSledrunCache.page_title)
- c.paginator = paginate.Page(q, page=int(request.params.get('page', 1)), items_per_page = 25)
- return render('rodelbahn_list.html')
+ c = TemplateContext()
+ c.paginator = paginate.Page(q.all(), page=int(request.args.get('page', 1)), items_per_page = 25)
+ return render_genshi_template('rodelbahn_list.html', c=c)
def view(self, id):
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):
+ 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))
+ 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"""
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_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):
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()}
+ genshi_kwargs = {'h': PylonsHelper(), 'session': FakeSession(), 'HTML': HTML}
genshi_kwargs.update(kwargs)
return tmpl.generate(**genshi_kwargs).render('html', doctype='html')
<a href="${h.url(controller='rodelbahn', action='update')}" class="button">(1) Rodelbahnboxen auslesen und DB aktualisieren</a>
<a href="${h.url(controller='rodelbahn', action='update_regioncache')}" class="button">(2) Rodelbahnen in den Regionslisten aktualisieren</a>
-<p>${c.paginator.pager('$link_first $link_previous $first_item bis $last_item von $item_count $link_next $link_last', controller='rodelbahn', action='list')}</p>
+<p>${HTML(c.paginator.pager('$link_first $link_previous $first_item bis $last_item von $item_count $link_next $link_last', url=h.url(controller='rodelbahn', action='list')+'?page=$page'))}</p>
<table>
<tr>
</tr>
</table>
-<p>${c.paginator.pager('~2~', controller='rodelbahn', action='list')}</p>
+<p>${HTML(c.paginator.pager('~2~', url=h.url(controller='rodelbahn', action='list')+'?page=$page'))}</p>
</body>
</html>