aboutsummaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorVikraman Choudhury <vikraman.choudhury@gmail.com>2011-07-08 01:07:12 +0530
committerVikraman Choudhury <vikraman.choudhury@gmail.com>2011-07-08 01:07:12 +0530
commit78fb9b4a76433d166ef20091a598105075eb4265 (patch)
tree8d72458861ff20c61e6a4f0c7cb932fc3cd6452e /server
parentadd package stats (diff)
downloadgentoostats-78fb9b4a76433d166ef20091a598105075eb4265.tar.gz
gentoostats-78fb9b4a76433d166ef20091a598105075eb4265.tar.bz2
gentoostats-78fb9b4a76433d166ef20091a598105075eb4265.zip
add top C,CP,CPV to /package pages
Diffstat (limited to 'server')
-rw-r--r--server/package.py131
-rw-r--r--server/templates/package.html9
-rw-r--r--server/templates/package_c.html10
-rw-r--r--server/templates/package_cp.html11
4 files changed, 129 insertions, 32 deletions
diff --git a/server/package.py b/server/package.py
index 8f23daf..4ac7aa2 100644
--- a/server/package.py
+++ b/server/package.py
@@ -1,74 +1,141 @@
+import web
import helpers
from config import render, db
class Package(object):
def GET(self, *args):
+ try:
+ top = int(web.input(top="5").top)
+ except ValueError:
+ top = 5
l = len(args)
if l == 0:
- return self.__GET()
+ return self.__GET(top)
elif l == 1:
- return self.__GET_C(args[0])
+ return self.__GET_C(top, args[0])
elif l == 2:
cpv = helpers.pkgsplit(args[0] + '/' + args[1])
if cpv['ver'] == '':
- return self.__GET_CP(cpv['cat'], cpv['pkg'])
+ return self.__GET_CP(top, cpv['cat'], cpv['pkg'])
else:
return self.__GET_CPV(cpv['cat'], cpv['pkg'], cpv['ver'])
else:
return config.internalerror()
- def __GET(self):
- pquery = db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT,\
+ def __GET(self, top):
+ p_query = 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 = PACKAGES.PKEY')
- t = pquery[0]
- pdata = {
- 'HOST_COUNT':t['HOST_COUNT'],
- 'C_COUNT':t['C_COUNT'],
- 'CP_COUNT':t['CP_COUNT'],
- 'CPV_COUNT':t['CPV_COUNT']
+ p_tuple = p_query[0]
+ p_data = {
+ 'HOST_COUNT':p_tuple['HOST_COUNT'],
+ 'C_COUNT':p_tuple['C_COUNT'],
+ 'CP_COUNT':p_tuple['CP_COUNT'],
+ 'CPV_COUNT':p_tuple['CPV_COUNT'],
+ 'TOP_C':self.__top(top)
}
- return render.package(pdata)
+ return render.package(p_data)
- def __GET_C(self, cat):
- pquery = db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT,\
+ def __GET_C(self, top, cat):
+ p_query = 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 = PACKAGES.PKEY\
WHERE CAT=$cat', vars={'cat':cat})
- t = pquery[0]
- pdata = {
- 'HOST_COUNT':t['HOST_COUNT'],
- 'CP_COUNT':t['CP_COUNT'],
- 'CPV_COUNT':t['CPV_COUNT']
+ p_tuple = p_query[0]
+ p_data = {
+ 'HOST_COUNT':p_tuple['HOST_COUNT'],
+ 'CP_COUNT':p_tuple['CP_COUNT'],
+ 'CPV_COUNT':p_tuple['CPV_COUNT'],
+ 'TOP_CP':self.__top(top, cat)
}
- return render.package_c(cat, pdata)
+ return render.package_c(cat, p_data)
- def __GET_CP(self, cat, pkg):
- pquery = db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT,\
+ def __GET_CP(self, top, cat, pkg):
+ p_query = 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 = PACKAGES.PKEY\
WHERE CAT=$cat AND PKG=$pkg', vars={'cat':cat,'pkg':pkg})
- t = pquery[0]
- pdata = {
- 'HOST_COUNT':t['HOST_COUNT'],
- 'CPV_COUNT':t['CPV_COUNT']
+ p_tuple = p_query[0]
+ p_data = {
+ 'HOST_COUNT':p_tuple['HOST_COUNT'],
+ 'CPV_COUNT':p_tuple['CPV_COUNT'],
+ 'TOP_CPV':self.__top(top, cat, pkg)
}
- return render.package_cp(cat, pkg, pdata)
+ return render.package_cp(cat, pkg, p_data)
def __GET_CPV(self, cat, pkg, ver):
- pquery = db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT\
+ p_query = db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT\
FROM INSTALLED_PACKAGES RIGHT OUTER JOIN PACKAGES\
ON INSTALLED_PACKAGES.PKEY = PACKAGES.PKEY\
WHERE CAT=$cat AND PKG=$pkg AND VER=$ver', vars={'cat':cat,'pkg':pkg,'ver':ver})
- t = pquery[0]
- pdata = {
- 'HOST_COUNT':t['HOST_COUNT'],
+ p_tuple = p_query[0]
+ p_data = {
+ 'HOST_COUNT':p_tuple['HOST_COUNT'],
}
- return render.package_cpv(cat, pkg, ver, pdata)
+ return render.package_cpv(cat, pkg, ver, p_data)
+
+ def __top(self, count, *args):
+ t_list = list()
+ if len(args) == 0:
+ tc_query = db.query('SELECT CAT,COUNT(DISTINCT UUID) AS HOST_COUNT\
+ FROM INSTALLED_PACKAGES RIGHT OUTER JOIN PACKAGES\
+ ON INSTALLED_PACKAGES.PKEY = PACKAGES.PKEY\
+ GROUP BY CAT\
+ ORDER BY HOST_COUNT DESC,CAT')
+ for idx in range(0,count):
+ try:
+ tc_tuple = tc_query[idx]
+ t_list.append({
+ 'CAT':tc_tuple['CAT'],
+ 'HOST_COUNT':tc_tuple['HOST_COUNT']
+ })
+ except IndexError:
+ break
+
+ elif len(args) == 1:
+ tcp_query = db.query('SELECT CAT,PKG,COUNT(DISTINCT UUID) AS HOST_COUNT\
+ FROM INSTALLED_PACKAGES RIGHT OUTER JOIN PACKAGES\
+ ON INSTALLED_PACKAGES.PKEY = PACKAGES.PKEY\
+ WHERE CAT=$cat\
+ GROUP BY CAT,PKG\
+ ORDER BY HOST_COUNT DESC,CAT,PKG',
+ vars={'cat':args[0]})
+ for idx in range(0,count):
+ try:
+ tcp_tuple = tcp_query[idx]
+ t_list.append({
+ 'CAT':tcp_tuple['CAT'],
+ 'PKG':tcp_tuple['PKG'],
+ 'HOST_COUNT':tcp_tuple['HOST_COUNT']
+ })
+ except IndexError:
+ break
+
+ elif len(args) == 2:
+ tcpv_query = db.query('SELECT CAT,PKG,VER,COUNT(DISTINCT UUID) AS HOST_COUNT\
+ FROM INSTALLED_PACKAGES RIGHT OUTER JOIN PACKAGES\
+ ON INSTALLED_PACKAGES.PKEY = PACKAGES.PKEY\
+ WHERE CAT=$cat AND PKG=$pkg\
+ GROUP BY CAT,PKG,VER\
+ ORDER BY HOST_COUNT DESC,CAT,PKG,VER',
+ vars={'cat':args[0],'pkg':args[1]})
+ for idx in range(0,count):
+ try:
+ tcpv_tuple = tcpv_query[idx]
+ t_list.append({
+ 'CAT':tcpv_tuple['CAT'],
+ 'PKG':tcpv_tuple['PKG'],
+ 'VER':tcpv_tuple['VER'],
+ 'HOST_COUNT':tcpv_tuple['HOST_COUNT']
+ })
+ except IndexError:
+ break
+
+ return t_list
diff --git a/server/templates/package.html b/server/templates/package.html
index ca8ec96..f1a4e5c 100644
--- a/server/templates/package.html
+++ b/server/templates/package.html
@@ -5,3 +5,12 @@ No. of hosts: $pdata['HOST_COUNT']</br>
No. of categories: $pdata['C_COUNT']</br>
No. of category-packages: $pdata['CP_COUNT']</br>
No. of category-package-versions: $pdata['CPV_COUNT']</br>
+Top Categories:</br>
+<table border="1">
+ <tr>
+ <th>Category</th>
+ <th>Hosts</th>
+ </tr>
+ $for p in pdata['TOP_C']:
+ <tr><td>$p['CAT']</td><td>$p['HOST_COUNT']</td></tr>
+</table>
diff --git a/server/templates/package_c.html b/server/templates/package_c.html
index 1d8e43a..8247173 100644
--- a/server/templates/package_c.html
+++ b/server/templates/package_c.html
@@ -4,3 +4,13 @@ $var title: $cat
No. of hosts: $pdata['HOST_COUNT']</br>
No. of category-packages: $pdata['CP_COUNT']</br>
No. of category-package-versions: $pdata['CPV_COUNT']</br>
+Top CPs:</br>
+<table border="1">
+ <tr>
+ <th>Category</th>
+ <th>Package</th>
+ <th>Hosts</th>
+ </tr>
+ $for p in pdata['TOP_CP']:
+ <tr><td>$p['CAT']</td><td>$p['PKG']</td><td>$p['HOST_COUNT']</td></tr>
+</table>
diff --git a/server/templates/package_cp.html b/server/templates/package_cp.html
index 1f24f8e..30fdb25 100644
--- a/server/templates/package_cp.html
+++ b/server/templates/package_cp.html
@@ -3,3 +3,14 @@ $var title: $cat/$pkg
No. of hosts: $pdata['HOST_COUNT']</br>
No. of category-package-versions: $pdata['CPV_COUNT']</br>
+Top CPVs:</br>
+<table border="1">
+ <tr>
+ <th>Category</th>
+ <th>Package</th>
+ <th>Version</th>
+ <th>Hosts</th>
+ </tr>
+ $for p in pdata['TOP_CPV']:
+ <tr><td>$p['CAT']</td><td>$p['PKG']</td><td>$p['VER']</td><td>$p['HOST_COUNT']</td></tr>
+</table>