summaryrefslogtreecommitdiff
path: root/patchtracker/Writers.py
diff options
context:
space:
mode:
authorSean Finney <seanius@debian.org>2008-06-04 00:21:45 +0200
committerSean Finney <seanius@debian.org>2008-06-04 00:21:45 +0200
commitadb7a8dcacbbb9e147f5306b6632c9c8b4bd0088 (patch)
tree3385daa7a161a326ce24dfee7b27c54f49f95c2d /patchtracker/Writers.py
parent1b16f0f567c163cef3da20b97f876003cd9ade61 (diff)
downloadpatch-tracker-adb7a8dcacbbb9e147f5306b6632c9c8b4bd0088.tar.gz
split up / modularize python code just a bit
Diffstat (limited to 'patchtracker/Writers.py')
-rwxr-xr-xpatchtracker/Writers.py83
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)