From 8a94227460e3e5dedb3afb71c1093f32644bed5b Mon Sep 17 00:00:00 2001 From: philipp Date: Thu, 27 Jul 2017 22:01:21 +0000 Subject: [PATCH] rodelbahn_list is rendered now. git-svn-id: http://www.winterrodeln.org/svn/wradmin/trunk@2675 7aebc617-e5e2-0310-91dc-80fb5f6d2477 --- setup.py | 1 + wradmin/__init__.py | 19 +++++++++++ wradmin/controllers/error.py | 46 --------------------------- wradmin/controllers/rodelbahn.py | 33 ++++++++----------- wradmin/genshi.py | 19 +++++++++-- wradmin/templates/rodelbahn_list.html | 4 +-- 6 files changed, 51 insertions(+), 71 deletions(-) delete mode 100644 wradmin/controllers/error.py diff --git a/setup.py b/setup.py index faedb13..98e73dc 100644 --- a/setup.py +++ b/setup.py @@ -12,6 +12,7 @@ setup( "Genshi>=0.4", "lxml>=2.2", "Babel>=0.9", + "paginate>=0.5.6", "wrpylib>=0.6.0", ], package_data={'wradmin': ['i18n/*/LC_MESSAGES/*.mo']}, diff --git a/wradmin/__init__.py b/wradmin/__init__.py index f61da7b..225b393 100644 --- a/wradmin/__init__.py +++ b/wradmin/__init__.py @@ -3,7 +3,9 @@ # 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__) @@ -16,6 +18,7 @@ def get_db(): """ 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 @@ -34,6 +37,22 @@ def index(): @app.route("/rodelbahn/list") def rodelbahn_list(): + get_db() + return RodelbahnController().list() + + +@app.route("/rodelbahn/update") +def rodelbahn_update(): + pass + + +@app.route("/rodelbahn/view/") +def rodelbahn_view(id): + pass + + +@app.route("/rodelbahn/update_regioncache") +def rodelbahn_update_regioncache(): pass diff --git a/wradmin/controllers/error.py b/wradmin/controllers/error.py deleted file mode 100644 index aa94b38..0000000 --- a/wradmin/controllers/error.py +++ /dev/null @@ -1,46 +0,0 @@ -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')) diff --git a/wradmin/controllers/rodelbahn.py b/wradmin/controllers/rodelbahn.py index 7aea8f2..142c6b5 100644 --- a/wradmin/controllers/rodelbahn.py +++ b/wradmin/controllers/rodelbahn.py @@ -1,38 +1,31 @@ #!/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): diff --git a/wradmin/genshi.py b/wradmin/genshi.py index 5267e7b..bf318f7 100644 --- a/wradmin/genshi.py +++ b/wradmin/genshi.py @@ -1,17 +1,19 @@ 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""" @@ -25,6 +27,17 @@ class PylonsHelper: 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): @@ -37,6 +50,6 @@ class FakeSession: 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') diff --git a/wradmin/templates/rodelbahn_list.html b/wradmin/templates/rodelbahn_list.html index bb73360..6bb762f 100644 --- a/wradmin/templates/rodelbahn_list.html +++ b/wradmin/templates/rodelbahn_list.html @@ -18,7 +18,7 @@ (1) Rodelbahnboxen auslesen und DB aktualisieren (2) Rodelbahnen in den Regionslisten aktualisieren -

${c.paginator.pager('$link_first $link_previous $first_item bis $last_item von $item_count $link_next $link_last', controller='rodelbahn', action='list')}

+

${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'))}

@@ -65,7 +65,7 @@
-

${c.paginator.pager('~2~', controller='rodelbahn', action='list')}

+

${HTML(c.paginator.pager('~2~', url=h.url(controller='rodelbahn', action='list')+'?page=$page'))}

-- 2.39.5