From 72e424b74685f13cc35f63f3e74119c3bd40ca1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCrer=20=C3=96zen?= Date: Sat, 10 Feb 2007 16:13:39 +0000 Subject: [PATCH] restructuring #1 --- scripts/repostats.py | 228 +++++++++++++++++++------------------------ 1 file changed, 98 insertions(+), 130 deletions(-) diff --git a/scripts/repostats.py b/scripts/repostats.py index 12cec5a0..96dddbd5 100755 --- a/scripts/repostats.py +++ b/scripts/repostats.py @@ -1,7 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- # -# Copyright (C) 2005, TUBITAK/UEKAE +# Copyright (C) 2005-2007, TUBITAK/UEKAE # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free @@ -29,6 +29,42 @@ import pisi.metadata import pisi.files from pisi.cli import printu +# Main HTML template + +html_header = """ + + %(title)s + + + +
+
+ +
+Genel Bilgiler + | Kaynak Paketler + | İkili Paketler + | Paketçiler +
+ +
+ +

%(title)s

+ +
+%(content)s +
+ + +""" + + + + + + + + # default html templates def_table_html = u""" @@ -44,47 +80,6 @@ def_repo_sizes_html = u""" """ -def_repo_html = u""" - - Depo istatistikleri - - - -
-
-
-

-Depoda toplam %(nr_source)d -kaynak paket, ve bu paketlerden oluşturulacak -%(nr_packages)d ikili paket bulunmaktadır. Toplam %(nr_patches)d yama mevcuttur. -

- -

-%(errors)s -

- -

En fazla yamalanmış 5 kaynak paket:

-%(most_patched)s -

- -

En uzun actions.py betikli 5 kaynak paket:

-%(longpy)s -

- -

Eksik ikili paketler

-%(missing)s -

- -%(sizes)s - -

Paketçiler:

-%(packagers)s -

- -
- -""" - def_packager_html = u""" Paketçi %(name)s @@ -240,20 +235,6 @@ def svn_uri(path): return uri -# FIXME: This check should be in specfile -valid_filetypes = [ - "executable", - "library", - "data", - "config", - "doc", - "man", - "info", - "localedata", - "header", - "all" -] - def valuesort(x, y): if x[1] > y[1]: return -1 @@ -286,6 +267,27 @@ def template_write(filename, tmpl_name, dict): f.write(template_get(tmpl_name) % dict) f.close() +def write_html(filename, title, content): + f = codecs.open(filename, "w", "utf-8") + dict = { + "title": title, + "content": content, + } + f.write(html_header % dict) + f.close() + +def make_table(elements): + def make_row(element): + return "%s" % "".join(map(str, element)) + + html = """ + + %s +
+ """ % "".join(map(make_row, elements)) + + return html + def template_table(tmpl_name, list): tmpl = template_get(tmpl_name) data = "" @@ -361,11 +363,6 @@ class Package: errors.append(_("Duplicate binary packages:\n%s\n%s\n") % ( source.name, packages[name].source.name)) return - for p in pakspec.files: - if p.fileType not in valid_filetypes: - e = _("Unknown file type '%s' in package '%s'") % ( - p.fileType, source.name) - errors.append(e) packages[name] = self self.name = name self.source = source @@ -429,22 +426,6 @@ class Source: self.uri = svn_uri(path) for p in spec.packages: Package(self, p) - self.checkRelease() - - def validDate(self, date): - # yyyy-mm-dd - err = 0 - if len(date) != 10: - err = 1 - if date[4] != '-' or date[7] != '-': - err = 1 - if err: - e = _("Source package '%s' has wrong date format '%s'") % (self.name, date) - errors.append(e) - # more checks can be added, i.e. valid day month ranges, etc - - def checkRelease(self): - pass def report_html(self): source = self.spec.source @@ -595,45 +576,46 @@ class Repository: self.processPisi(os.path.join(root, fn)) def report_html(self): - miss = map(lambda x: "%s" % (x, x), missing.keys()) - upeople = [] - for p in self.people.get_list(): - upeople.append(("%s" % (p[0], p[0]), p[1])) - if errors: - e = "
".join(errors) - else: - e = "" - upatch = [] - for p in self.mostpatched.get_list(5): - upatch.append(("%s" % (p[0], p[0]), p[1])) - ulongpy = [] - for p in self.longpy.get_list(5): - ulongpy.append(("%s" % (p[0], p[0]), p[1])) - if self.total_installed_size: - items = self.installed_sizes.items() - items.sort(valuesort) - elts = "".join(map(lambda x: "%s%d" % (x[0], x[1]), items)) - sizes = template_get("repo_sizes") % { "total": self.total_installed_size, "sizes": elts } - else: - sizes = "" - dict = { - "nr_source": self.nr_sources, - "nr_packages": self.nr_packages, - "nr_patches": self.nr_patches, - "most_patched": template_table("table", upatch), - "longpy": template_table("table", ulongpy), - "packagers": template_table("table", upeople), - "missing": "\n".join(miss), - "sizes": sizes, - "errors": e - } - template_write("paksite/index.html", "repo", dict) - srclist = map(lambda x: "%s" % (x, x), sources) - srclist.sort() - dict = { - "source_list": "
".join(srclist) - } - template_write("paksite/sources.html", "sources", dict) + table = ( + ("Kaynak paket sayısı", self.nr_sources), + ("İkili paket sayısı", self.nr_packages), + ("Yama sayısı", self.nr_patches), + ("Paketçi sayısı", len(self.people.list)), + ) + html = make_table(table) + + html += """ +
+

En fazla yamalanmış beş kaynak paket:

+ %s +

+ """ % make_table(self.mostpatched.get_list(5)) + + html += """ +
+

En uzun inşa betikli beş kaynak paket:

+ %s +

+ """ % make_table(self.longpy.get_list(5)) + + write_html("paksite/index.html", "Depo İstatistikleri", html) + + people = self.people.get_list() + people = map(lambda x: ("%s" % (x[0], x[0]), x[1]), people) + write_html("paksite/packagers.html", "Paketçiler (paket sayısına göre)", make_table(people)) + + people.sort(key=lambda x: x[0]) + write_html("paksite/packagers_by_name.html", "Paketçiler (isme göre)", make_table(people)) + + srclist = map(lambda x: (x.name, x.spec.getSourceVersion(), x.spec.source.summary), sources.values()) + srclist.sort(key=lambda x: x[0]) + html = make_table(srclist) + write_html("paksite/sources.html", "Kaynak Paketler", html) + + binlist = map(lambda x: (x.name, x.source.spec.getSourceVersion(), x.source.spec.source.summary), packages.values()) + binlist.sort(key=lambda x: x[0]) + html = make_table(binlist) + write_html("paksite/binaries.html", "İkili Paketler", html) # command line driver @@ -668,20 +650,6 @@ if __name__ == "__main__": printu(_("Scanning binary packages...\n")) repo.scan_bins(args[1]) - if errors: - printu("***\n") - printu(_("Encountered %d errors! Fix them immediately!\n") % len(errors)) - for e in errors: - printu(e) - printu("\n") - printu("\n") - printu("***\n") - - if missing: - printu(_("These dependencies are not available in repository:\n")) - for m in missing.keys(): - printu(" %s\n" % m) - if do_web: if not os.path.exists("paksite/packager"): os.makedirs("paksite/packager")