2 # -*- coding: iso-8859-15 -*-
5 from pylons import request, response, session, url, tmpl_context as c
6 from pylons.controllers.util import abort, redirect
7 import webhelpers.paginate as paginate
9 from wradmin.lib.base import BaseController, render
10 import wradmin.model as model
11 import sqlalchemy as sa
15 import wrpylib.wrmwmarkup
17 log = logging.getLogger(__name__)
19 class GasthausController(BaseController):
23 q = model.meta.Session.query(model.WrInnCache)
24 q = q.order_by(model.WrInnCache.page_title)
25 c.paginator = paginate.Page(q, page=int(request.params.get('page', 1)), items_per_page = 25)
26 return render('gasthaus_list.html')
31 q = model.meta.Session.query(model.WrInnCache)
33 if c.inn is None: abort(404)
34 return render('gasthaus_view.html')
38 "Updates the wrinncache table from the wiki"
39 from wradmin.model import page_table as page, wrinncache_table as wrinncache, categorylinks_table as categorylinks, revision_table as revision, text_table as text
40 from sqlalchemy.sql import select
41 c = model.meta.Session.connection()
44 q = select([page, categorylinks, revision, text], (page.c.page_latest==revision.c.rev_id) & (text.c.old_id==revision.c.rev_text_id) & (categorylinks.c.cl_from==page.c.page_id) & (categorylinks.c.cl_to==u'Gasthaus'))
45 inn_pages = c.execute(q)
47 # Delete all existing entries in wrinncache
48 c.execute(wrinncache.delete())
50 # Refill wrinncache table
52 for inn_page in inn_pages:
54 start, end, inn = wrpylib.wrmwmarkup.gasthausbox_to_inn(inn_page.old_text, model.WrInnCache())
55 inn.page_id = inn_page.page_id
56 inn.page_title = inn_page.page_title
57 inn.under_construction = c.execute(select([categorylinks], (categorylinks.c.cl_from==inn_page.page_id) & (categorylinks.c.cl_to == u'In_Arbeit')).alias('x').count()).fetchone()[0] > 0 # It would be better to do this in the query above
58 model.meta.Session.add(inn)
59 except (RuntimeError, formencode.Invalid) as e: error_msg = u"Fehler bei Gasthaus '%s': " % inn_page.page_title + unicode(e)
60 model.meta.Session.commit()
62 # Redirect to result page
63 if error_msg == '': session['flash'] = u'Die Gasthausliste wurde erfolgreich aktualisiert.'
64 else: session['flash'] = error_msg
66 return redirect(url(controller='gasthaus', action='list'))