From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1Qer20-0002Sk-8E for garchives@archives.gentoo.org; Thu, 07 Jul 2011 16:02:24 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 24F6521C030; Thu, 7 Jul 2011 16:02:16 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id D46E521C030 for ; Thu, 7 Jul 2011 16:02:15 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 974201B403B for ; Thu, 7 Jul 2011 16:02:14 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id EC2598003D for ; Thu, 7 Jul 2011 16:02:13 +0000 (UTC) From: "Vikraman Choudhury" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Vikraman Choudhury" Message-ID: Subject: [gentoo-commits] proj/gentoostats:master commit in: server/, server/templates/ X-VCS-Repository: proj/gentoostats X-VCS-Files: server/app.py server/helpers.py server/host.py server/package.py server/templates/package.html server/templates/package_c.html server/templates/package_cp.html server/templates/package_cpv.html X-VCS-Directories: server/ server/templates/ X-VCS-Committer: vikraman X-VCS-Committer-Name: Vikraman Choudhury X-VCS-Revision: dbf074eb8ad273dcb0f6ac3e0f5af97a45ce0423 Date: Thu, 7 Jul 2011 16:02:13 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 3ec9b95aa2f83880961f15fdd22dcb00 commit: dbf074eb8ad273dcb0f6ac3e0f5af97a45ce0423 Author: Vikraman Choudhury gmail com> AuthorDate: Thu Jul 7 16:01:56 2011 +0000 Commit: Vikraman Choudhury gmail com> CommitDate: Thu Jul 7 16:01:56 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gentoostats.g= it;a=3Dcommit;h=3Ddbf074eb add package stats --- server/app.py | 4 ++ server/helpers.py | 26 ++++++------ server/host.py | 32 ++++++++-------- server/package.py | 74 +++++++++++++++++++++++++++++++= ++++++ server/templates/package.html | 7 +++ server/templates/package_c.html | 6 +++ server/templates/package_cp.html | 5 ++ server/templates/package_cpv.html | 4 ++ 8 files changed, 129 insertions(+), 29 deletions(-) diff --git a/server/app.py b/server/app.py index ba77639..94dffdd 100755 --- a/server/app.py +++ b/server/app.py @@ -12,6 +12,7 @@ from kwd import Keyword from use import Use from repo import Repo from lang import Lang +from package import Package from host import Host =20 urls =3D ( @@ -24,6 +25,9 @@ urls =3D ( r'/use', 'Use', r'/repo', 'Repo', r'/lang', 'Lang', + r'/package/(.+)/(.+)', 'Package', + r'/package/(.+)', 'Package', + r'/package', 'Package', r'/host/(.+)', 'Host' ) =20 diff --git a/server/helpers.py b/server/helpers.py index 386d73c..10ac31f 100644 --- a/server/helpers.py +++ b/server/helpers.py @@ -1,6 +1,7 @@ =20 import uuid import re +from portage.versions import catpkgsplit =20 # check valid uuid =20 @@ -15,22 +16,21 @@ def uuidbin(string): u =3D uuid.UUID(string) return u.bytes =20 -# split package name into cpv -# based on pkgsplit code=20 -# in portage/versions.py +# custom pkgsplit =20 def pkgsplit(pkgname): - cpv=3D{} - pkgsplit =3D pkgname.split('/',1) - cpv['cat'] =3D pkgsplit[0] - pv_re =3Dre.compile(r'(?x)^(?P[\w\+][\w\+-]*?(?P-(cvs\.)= ?(\d+)((\.\d+)*)([a-z]?)((_(pre|p|beta|alpha|rc)\d*)*)(-r(\d+))?)?)-(?P(cvs\.)?(\d+)((\.\d+)*)([a-z]?)((_(pre|p|beta|alpha|rc)\d*)*))(-r(?P\d+))?$') - m =3D pv_re.match(pkgsplit[1]) - cpv['pkg'] =3D m.group('pn') - rev =3D m.group('rev') - if rev is None: - cpv['ver'] =3D m.group('ver') + cpv=3D{'cat':'','pkg':'','ver':''} + cpvr =3D catpkgsplit(pkgname) + if cpvr is None: + pkgsplit =3D pkgname.split('/') + cpv['cat'] =3D pkgsplit[0] + cpv['pkg'] =3D pkgsplit[1] else: - cpv['ver'] =3D m.group('ver') + '-r' + rev + cpv['cat'] =3D cpvr[0] + cpv['pkg'] =3D cpvr[1] + cpv['ver'] =3D cpvr[2] + if cpvr[3] !=3D 'r0': + cpv['ver'] =3D cpv['ver'] + '-' + cpvr[3] return cpv =20 # get functions for index keys diff --git a/server/host.py b/server/host.py index b0d9235..c9a5d03 100644 --- a/server/host.py +++ b/server/host.py @@ -16,46 +16,46 @@ class Host(object): if len(hosts) =3D=3D 0: return config.notfound() =20 - get_data =3D dict() - get_data['UUID'] =3D str_uuid + host_data =3D dict() + host_data['UUID'] =3D str_uuid =20 env =3D db.select('ENV', vars=3D{'uuid':uuid}, where=3D"UUID=3D$uuid") e =3D env[0] for var in ['PLATFORM','LASTSYNC','PROFILE','ARCH','CHOST','CFLAGS','CX= XFLAGS','FFLAGS','LDFLAGS','MAKEOPTS','SYNC']: - get_data[var] =3D e[var] + host_data[var] =3D e[var] =09 - get_data['FEATURES'] =3D list() + host_data['FEATURES'] =3D list() features =3D db.query('SELECT FEATURE FROM HOST_FEATURES NATURAL JOIN F= EATURES WHERE UUID=3D$uuid', vars=3D{'uuid':uuid}) for f in features: - get_data['FEATURES'].append(f['FEATURE']) + host_data['FEATURES'].append(f['FEATURE']) =20 - get_data['ACCEPT_KEYWORDS'] =3D list() + host_data['ACCEPT_KEYWORDS'] =3D list() keywords =3D db.query('SELECT KEYWORD FROM GLOBAL_KEYWORDS NATURAL JOIN= KEYWORDS WHERE UUID=3D$uuid', vars=3D{'uuid':uuid}) for k in keywords: - get_data['ACCEPT_KEYWORDS'].append(k['KEYWORD']) + host_data['ACCEPT_KEYWORDS'].append(k['KEYWORD']) =09 - get_data['USE'] =3D list() + host_data['USE'] =3D list() useflags =3D db.query('SELECT USEFLAG FROM GLOBAL_USEFLAGS NATURAL JOIN= USEFLAGS WHERE UUID=3D$uuid', vars=3D{'uuid':uuid}) for u in useflags: - get_data['USE'].append(u['USEFLAG']) + host_data['USE'].append(u['USEFLAG']) =20 - get_data['LANG'] =3D list() + host_data['LANG'] =3D list() lang =3D db.query('SELECT LANG FROM HOST_LANG NATURAL JOIN LANG WHERE U= UID=3D$uuid', vars=3D{'uuid':uuid}) for l in lang: - get_data['LANG'].append(l['LANG']) + host_data['LANG'].append(l['LANG']) =20 - get_data['GENTOO_MIRRORS'] =3D list() + host_data['GENTOO_MIRRORS'] =3D list() mirrors =3D db.query('SELECT MIRROR FROM HOST_MIRRORS NATURAL JOIN GENT= OO_MIRRORS WHERE UUID=3D$uuid', vars=3D{'uuid':uuid}) for m in mirrors: - get_data['GENTOO_MIRRORS'].append(m['MIRROR']) + host_data['GENTOO_MIRRORS'].append(m['MIRROR']) =20 - get_data['PACKAGES'] =3D dict() + host_data['PACKAGES'] =3D dict() packages =3D db.query('SELECT CAT, PKG, VER FROM INSTALLED_PACKAGES NAT= URAL JOIN PACKAGES WHERE UUID=3D$uuid ORDER BY CAT, PKG, VER', vars=3D{'u= uid':uuid}) for p in packages: cpv =3D p['CAT'] + '/' + p['PKG'] + '-' + p['VER'] - get_data['PACKAGES'][cpv] =3D dict() + host_data['PACKAGES'][cpv] =3D dict() =20 - return render.host(get_data) + return render.host(host_data) =20 def POST(self, str_uuid): post_data =3D json.JSONDecoder().decode(web.data()) diff --git a/server/package.py b/server/package.py new file mode 100644 index 0000000..8f23daf --- /dev/null +++ b/server/package.py @@ -0,0 +1,74 @@ + +import helpers +from config import render, db + +class Package(object): + def GET(self, *args): + l =3D len(args) + if l =3D=3D 0: + return self.__GET() + elif l =3D=3D 1: + return self.__GET_C(args[0]) + elif l =3D=3D 2: + cpv =3D helpers.pkgsplit(args[0] + '/' + args[1]) + if cpv['ver'] =3D=3D '': + return self.__GET_CP(cpv['cat'], cpv['pkg']) + else: + return self.__GET_CPV(cpv['cat'], cpv['pkg'], cpv['ver']) + else: + return config.internalerror() + + def __GET(self): + pquery =3D db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT,\ + COUNT(DISTINCT CAT) AS C_COUNT,\ + COUNT(DISTINCT CAT,PKG) AS CP_COUNT,\ + COUNT(DISTINCT CAT,PKG,VER) AS CPV_COUNT\ + FROM INSTALLED_PACKAGES RIGHT OUTER JOIN PACKAGES\ + ON INSTALLED_PACKAGES.PKEY =3D PACKAGES.PKEY') + t =3D pquery[0] + pdata =3D { + 'HOST_COUNT':t['HOST_COUNT'], + 'C_COUNT':t['C_COUNT'], + 'CP_COUNT':t['CP_COUNT'], + 'CPV_COUNT':t['CPV_COUNT'] + } + return render.package(pdata) + + def __GET_C(self, cat): + pquery =3D db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT,\ + COUNT(DISTINCT CAT,PKG) AS CP_COUNT,\ + COUNT(DISTINCT CAT,PKG,VER) AS CPV_COUNT\ + FROM INSTALLED_PACKAGES RIGHT OUTER JOIN PACKAGES\ + ON INSTALLED_PACKAGES.PKEY =3D PACKAGES.PKEY\ + WHERE CAT=3D$cat', vars=3D{'cat':cat}) + t =3D pquery[0] + pdata =3D { + 'HOST_COUNT':t['HOST_COUNT'], + 'CP_COUNT':t['CP_COUNT'], + 'CPV_COUNT':t['CPV_COUNT'] + } + return render.package_c(cat, pdata) + + def __GET_CP(self, cat, pkg): + pquery =3D db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT,\ + COUNT(DISTINCT CAT,PKG,VER) AS CPV_COUNT\ + FROM INSTALLED_PACKAGES RIGHT OUTER JOIN PACKAGES\ + ON INSTALLED_PACKAGES.PKEY =3D PACKAGES.PKEY\ + WHERE CAT=3D$cat AND PKG=3D$pkg', vars=3D{'cat':cat,'pkg':pkg}) + t =3D pquery[0] + pdata =3D { + 'HOST_COUNT':t['HOST_COUNT'], + 'CPV_COUNT':t['CPV_COUNT'] + } + return render.package_cp(cat, pkg, pdata) + + def __GET_CPV(self, cat, pkg, ver): + pquery =3D db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT\ + FROM INSTALLED_PACKAGES RIGHT OUTER JOIN PACKAGES\ + ON INSTALLED_PACKAGES.PKEY =3D PACKAGES.PKEY\ + WHERE CAT=3D$cat AND PKG=3D$pkg AND VER=3D$ver', vars=3D{'cat':cat,'pk= g':pkg,'ver':ver}) + t =3D pquery[0] + pdata =3D { + 'HOST_COUNT':t['HOST_COUNT'], + } + return render.package_cpv(cat, pkg, ver, pdata) diff --git a/server/templates/package.html b/server/templates/package.htm= l new file mode 100644 index 0000000..ca8ec96 --- /dev/null +++ b/server/templates/package.html @@ -0,0 +1,7 @@ +$def with (pdata) +$var title: Package + +No. of hosts: $pdata['HOST_COUNT']
+No. of categories: $pdata['C_COUNT']
+No. of category-packages: $pdata['CP_COUNT']
+No. of category-package-versions: $pdata['CPV_COUNT']
diff --git a/server/templates/package_c.html b/server/templates/package_c= .html new file mode 100644 index 0000000..1d8e43a --- /dev/null +++ b/server/templates/package_c.html @@ -0,0 +1,6 @@ +$def with (cat, pdata) +$var title: $cat + +No. of hosts: $pdata['HOST_COUNT']
+No. of category-packages: $pdata['CP_COUNT']
+No. of category-package-versions: $pdata['CPV_COUNT']
diff --git a/server/templates/package_cp.html b/server/templates/package_= cp.html new file mode 100644 index 0000000..1f24f8e --- /dev/null +++ b/server/templates/package_cp.html @@ -0,0 +1,5 @@ +$def with (cat, pkg, pdata) +$var title: $cat/$pkg + +No. of hosts: $pdata['HOST_COUNT']
+No. of category-package-versions: $pdata['CPV_COUNT']
diff --git a/server/templates/package_cpv.html b/server/templates/package= _cpv.html new file mode 100644 index 0000000..4abb62a --- /dev/null +++ b/server/templates/package_cpv.html @@ -0,0 +1,4 @@ +$def with (cat, pkg, ver, pdata) +$var title: $cat/$pkg-$ver + +No. of hosts: $pdata['HOST_COUNT']