diff options
author | Vikraman Choudhury <vikraman.choudhury@gmail.com> | 2011-07-08 01:07:12 +0530 |
---|---|---|
committer | Vikraman Choudhury <vikraman.choudhury@gmail.com> | 2011-07-08 01:07:12 +0530 |
commit | 78fb9b4a76433d166ef20091a598105075eb4265 (patch) | |
tree | 8d72458861ff20c61e6a4f0c7cb932fc3cd6452e /server | |
parent | add package stats (diff) | |
download | gentoostats-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.py | 131 | ||||
-rw-r--r-- | server/templates/package.html | 9 | ||||
-rw-r--r-- | server/templates/package_c.html | 10 | ||||
-rw-r--r-- | server/templates/package_cp.html | 11 |
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> |