From 4b4905db5f4123a88dca9f0164a3a35679a9dc13 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Tue, 4 May 2010 12:36:58 +0200 Subject: More controller stuff --- controller.py | 49 +++++++++++++++++++++++++++++++++++++--------- index.py | 14 +++++++++---- renderer.py | 17 +++++++--------- templates/menu.mako | 2 ++ templates/page.mako | 39 +----------------------------------- templates/pages/index.mako | 49 ---------------------------------------------- templates/root.mako | 4 ++-- 7 files changed, 62 insertions(+), 112 deletions(-) delete mode 100644 templates/pages/index.mako diff --git a/controller.py b/controller.py index e4c07f7..69eaf76 100644 --- a/controller.py +++ b/controller.py @@ -4,16 +4,47 @@ import web from helper import appdir from renderer import render -class Page: - """ - All the general and simple pages. - """ - def GET(self, name = '/'): - if not name or name == '/': name = 'index' - return render(name) +class Show: + def GET(self, year = '', month = ''): + if year: return "Show %s/%s" % (year, month) + else: return "Show current" + +class Add: + def GET(self): + return "Add new" + +class Edit: + def GET(self, id): + return "Edit " + id + +class Const: + def GET(self): + return "Const" + +class ConstAdd: + def GET(self): + return "Add new const" -def FourOhFour(page="?"): +class ConstEdit: + def GET(self, id): + return "Const Edit " + id + +class Cat: + def GET(self, id = '/'): + if id: + id = id[1:] + + if not id: return "Add new cat" + else: return "Edit cat " + id + +class FourOhFour: """ 404 error page. """ - return web.notfound(render("404", level = "", page = page)) + + def GET (self, p): + raise self.catch(p) + + @staticmethod + def catch (page = "?"): + return web.notfound(render("404", page = page)) diff --git a/index.py b/index.py index d9e2e7d..aaf0f75 100755 --- a/index.py +++ b/index.py @@ -8,10 +8,16 @@ import model # URL Mappings # urls = ( - "/r/(.*)", controller.Redirect, - "/(.*)", controller.Page + "/add/?", controller.Add, + "/edit/(\d+)", controller.Edit, + "/const/?", controller.Const, + "/const/add/?", controller.ConstAdd, + "/const/edit/(\d+)", controller.ConstEdit, + "/cat/?(/\d+)?", controller.Cat, + "/(\d\d\d\d)/(\d\d)", controller.Show, + "/", controller.Show, + "/(.*)", controller.FourOhFour ) - # # ORM # @@ -33,7 +39,7 @@ def handle_sql(handler): # The App # app = web.application(urls, globals()) -app.notfound = controller.FourOhFour +app.notfound = controller.FourOhFour.catch # add orm processor app.add_processor(handle_sql) diff --git a/renderer.py b/renderer.py index b8ce716..6f983a4 100644 --- a/renderer.py +++ b/renderer.py @@ -17,24 +17,21 @@ class Renderer: output_encoding='utf-8', format_exceptions = True) - def render (self, tpl, level = "pages" , **kwargs): + def render (self, tpl, **kwargs): try: - t = self.get_tpl(tpl, level) + t = self.get_tpl(tpl) except mako.exceptions.TopLevelLookupException, e: raise web.ctx.app_stack[-1].notfound(tpl) - return t.render(h = helper, url = helper.url, w = web, _hl = highlighting, **kwargs) + return t.render(h = helper, url = helper.url, w = web, **kwargs) __call__ = render - def get_tpl (self, tpl, level): - return self.lookup.get_template(self.get_tpl_name(tpl, level)) - - def get_tpl_name (self, tpl, level): + def get_tpl (self, tpl): if not tpl.endswith(".mako"): tpl = tpl+".mako" - - return os.path.join(level, tpl) - + + return self.lookup.get_template(tpl) + # the one and only instance :) render = Renderer() diff --git a/templates/menu.mako b/templates/menu.mako index 64701b2..fc2e740 100644 --- a/templates/menu.mako +++ b/templates/menu.mako @@ -1,5 +1,7 @@ <%! menu = [ ("/index", "Kosten"), + ("/const", "Konstante Kosten"), + ("/categories", "Kategorien") ] %> diff --git a/templates/page.mako b/templates/page.mako index aa2aa51..cc9911f 100644 --- a/templates/page.mako +++ b/templates/page.mako @@ -1,46 +1,9 @@ <%! title = "" - uses_toc = False %> -<% - page_text = capture(next.body) -%> - <%inherit file="/root.mako" /> ## content

${self.attr.title}

-% if self.attr.uses_toc: - ${self.preface()} - ${self.toc()} -% endif - -${page_text} - -## functions - -<%def name="h2(tag='h2')"> - <% - if self.attr.uses_toc: - c = capture(caller.body) - name = c.replace(" ", "_").replace("/", "_").lower() - tlist = getattr(self.attr, "tlist", []) - tlist.append((str(name), str(c))) - - self.attr.tlist = tlist - else: - name = "#" - %> - <${tag}>» ${caller.body()} - - -<%def name="toc()"> - - - -<%def name="preface()"> +${next.body()} diff --git a/templates/pages/index.mako b/templates/pages/index.mako deleted file mode 100644 index 8ce483e..0000000 --- a/templates/pages/index.mako +++ /dev/null @@ -1,49 +0,0 @@ -<%! - title = "Portato" -%> -<%inherit file="/page.mako" /> - -

- Portato is a GUI for the package manager of Gentoo and Sabayon - Portage. It is mostly written in Python for the GTK+-frontend, which is used in most Linux desktop environments (except KDE). -

- -

- As the current portage development is quite fast-paced, Portato is not able to keep step. Thus it might be that the released version(s) do not behave as expected. In these cases also try the development version. -

- -<%self:h2>Installation -

- Portato is delivered with the standard portage tree and can be installed using emerge portato. - If you want to use the development version, you need to do the following (given you have installed and configured layman ... if not: see this guide): -

- -<%self:hl lang="bash"> -layman -a portato -echo "=app-portage/portato-9999" >> /etc/portage/package.unmask -echo "=app-portage/portato-9999" >> /etc/portage/package.keywords -emerge -av portato - - -<%self:h2>Translations -

- Portato does know about the so called Native Language Support. It currently supports the following languages: Catalan, English, Italian, German, Polish, Portugese, and Turkish. -

-

- If you want to add support for another language, please see the translation howto. -

- -<%self:h2>Forums -

- This project itself does not have any forums. But there are a couple of threads in other forums:
- If you are using Gentoo look into this forum thread (engl) or into the German one. If you are using Sabayon, use this one. -

- -<%self:h2>Similar projects -

- Of course there are other projects too, which do the same or at least a similar job. These are for example: -

- diff --git a/templates/root.mako b/templates/root.mako index bfadb2a..627d14a 100644 --- a/templates/root.mako +++ b/templates/root.mako @@ -10,7 +10,7 @@
@@ -42,7 +42,7 @@ <%def name="style()"> - + <%def name="footer()"> -- cgit v1.2.3-70-g09d2