Mercurial > treepkg > treepkg
view treepkg/web.py @ 52:78cf5f6778ec
Rename 'packagel ine' -> 'package track'
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Tue, 03 Apr 2007 20:33:33 +0200 |
parents | 467013d9d627 |
children | 2ff966839859 |
line wrap: on
line source
# Copyright (C) 2007 by Intevation GmbH # Authors: # Bernhard Herzog <bh@intevation.de> # # This program is free software under the GPL (>=v2) # Read the file COPYING coming with the software for details. import os from genshi.template import TemplateLoader import cherrypy from cherrypy import expose from cherrypy.lib import cptools import report class Status(object): """Implements the tree packager status pages""" def __init__(self, treepkg_config): self.treepkg_config = treepkg_config self.loader = TemplateLoader([os.path.dirname(__file__)]) @expose def index(self): group = report.get_packager_group(self.treepkg_config) tmpl = self.loader.load('web-status.html') stream = tmpl.generate(report=report.prepare_report(group)) return stream.render('html') def build_log_filename(self, package_track_name, revno): """Returns the name of the build log file of a revision if it exists""" group = report.get_packager_group(self.treepkg_config) for track in group.get_package_tracks(): if track.name == package_track_name: for revision in track.get_revisions(): if str(revision.revision) == revno: if revision.has_build_log(): return revision.build_log @expose def default(self, *rest): """Handles requests for .../pkg/revno/build.log""" filename = None if len(rest) == 3 and rest[2] == "build.log": filename = self.build_log_filename(*rest[:2]) if filename is not None: return cptools.serveFile(filename, contentType="text/plain") else: raise cherrypy.HTTPError(status="404") class TreePKG(object): """Root object for the tree packager web interface""" @expose def index(self): raise cherrypy.HTTPRedirect('/status') def runserver(treepkg_config, cherrypy_config): cherrypy.root = TreePKG() cherrypy.root.status = Status(treepkg_config=treepkg_config) cherrypy.config.update(file=cherrypy_config) cherrypy.server.start()