diff options
author | Sean Finney <seanius@debian.org> | 2008-06-04 00:21:45 +0200 |
---|---|---|
committer | Sean Finney <seanius@debian.org> | 2008-06-04 00:21:45 +0200 |
commit | adb7a8dcacbbb9e147f5306b6632c9c8b4bd0088 (patch) | |
tree | 3385daa7a161a326ce24dfee7b27c54f49f95c2d /patchtracker/Writers.py | |
parent | 1b16f0f567c163cef3da20b97f876003cd9ade61 (diff) | |
download | patch-tracker-adb7a8dcacbbb9e147f5306b6632c9c8b4bd0088.tar.gz |
split up / modularize python code just a bit
Diffstat (limited to 'patchtracker/Writers.py')
-rwxr-xr-x | patchtracker/Writers.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/patchtracker/Writers.py b/patchtracker/Writers.py new file mode 100755 index 0000000..7e2d356 --- /dev/null +++ b/patchtracker/Writers.py @@ -0,0 +1,83 @@ +from patchtracker import Conf + +from Cheetah.Template import Template +from Cheetah.Compiler import Compiler +import os +import errno + +class OurTemplate(Template): + def __init__(self, file): + Template.__init__(self, file=file, searchList={"conf":Conf}) + +class PackageVersTemplate(OurTemplate): + src = None + suite = None + + def __init__(self, srcpkg, suite): + self.src = srcpkg + self.suite = suite + tpl=os.sep.join([Conf.template_dir, "package_vers.tmpl"]) + OurTemplate.__init__(self, file=tpl) + +class FrontPageTemplate(OurTemplate): + allindex = None + relindices = [] + + def __init__(self, allindex, release_indices=[]): + tpl = os.sep.join([Conf.template_dir, "frontpage.tmpl"]) + OurTemplate.__init__(self, file=tpl) + self.allindex = allindex + self.relindices = release_indices + +class LetterTocTemplate(OurTemplate): + idx = None + pkgs = None + dists = None + + def releases(self): + return dists + + 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 PageWriter: + def __init__(self, filename, template): + try: + os.makedirs(os.path.dirname(filename)) + except OSError, e: + if e.errno != errno.EEXIST: + raise e + o = file(filename, "w") + o.write(str(template)) + o.close() + +class PackageVersWriter(PageWriter): + def __init__(self, template): + dstdir = os.sep.join([Conf.output_dir, "packages", template.src.name, template.src.version]) + try: + os.makedirs(dstdir) + except OSError, e: + if e.errno != errno.EEXIST: + raise e + template.src.diff_debiandir(dstdir) + template.src.diff_nondebiandir(dstdir) + template.src.diff_series(dstdir) + dst = os.sep.join([dstdir, "index.html"]) + PageWriter.__init__(self, dst, template) + +class FrontPageWriter(PageWriter): + def __init__(self, template): + dest = os.sep.join([Conf.output_dir, "index.html"]) + PageWriter.__init__(self, dest, template) + +class LetterTocWriter(PageWriter): + def __init__(self, template): + dest = os.sep.join([Conf.output_dir, "index", template.idx, "index.html"]) + PageWriter.__init__(self, dest, template) |