from patchtracker import Conf from patchtracker.DiffGzHandler import DiffGzHandler from Cheetah.Template import Template from Cheetah.Compiler import Compiler import os import errno class OurTemplate(Template): def __init__(self, file, searchList=None): ourSearchList={"conf":Conf} if searchList: for k,v in searchList.iteritems(): ourSearchList[k]=v Template.__init__(self, file=file, searchList=ourSearchList) class PackageVersTemplate(OurTemplate): def __init__(self, srcpkg): self.src = srcpkg tpl=os.sep.join([Conf.template_dir, "package_vers.tmpl"]) sl = {} if srcpkg.diffgz_name: dfile = os.sep.join([Conf.archive_root,srcpkg.loc,srcpkg.diffgz_name]) sl['diffhandler'] = DiffGzHandler(dfile) else: sl['diffhandler'] = None OurTemplate.__init__(self, file=tpl, searchList=sl) class FrontPageTemplate(OurTemplate): def __init__(self, indices): tpl = os.sep.join([Conf.template_dir, "frontpage.tmpl"]) OurTemplate.__init__(self, file=tpl) self.indices = indices class LetterTocTemplate(OurTemplate): def __init__(self, letter, collection): self.pkgs = collection self.idx = letter self.dists = {} for name,packagelist in collection.iteritems(): for d in packagelist.iterkeys(): self.dists[d] = True tpl = os.sep.join([Conf.template_dir, "letter_toc.tmpl"]) OurTemplate.__init__(self, file=tpl) class SearchResultsTemplate(OurTemplate): def __init__(self, search, collection): self.pkgs = {} self.idx = search self.dists = {} for idx in collection.indices(): for name,packagelist in collection.getletter(idx).iteritems(): self.pkgs[name] = packagelist for d in packagelist.iterkeys(): self.dists[d] = True tpl = os.sep.join([Conf.template_dir, "searchresults.tmpl"]) OurTemplate.__init__(self, file=tpl) class ErrorTemplate(OurTemplate): def __init__(self, msg): tpl = os.sep.join([Conf.template_dir, "cgi_error.tmpl"]) OurTemplate.__init__(self, file=tpl, searchList={'error':msg}) class PatchTemplate(OurTemplate): def __init__(self, pkg=None, vers=None, name=None, patch=None,patchtype=None): tpl = os.sep.join([Conf.template_dir, "patch_view.tmpl"]) sl = {'package':pkg, 'version':vers, 'name':name, 'patch':patch, 'patchtype':patchtype} OurTemplate.__init__(self, file=tpl, searchList=sl)