public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Vikraman Choudhury" <vikraman.choudhury@gmail.com>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gentoostats:master commit in: server/, server/templates/
Date: Thu,  7 Jul 2011 19:40:37 +0000 (UTC)	[thread overview]
Message-ID: <78fb9b4a76433d166ef20091a598105075eb4265.vikraman@gentoo> (raw)

commit:     78fb9b4a76433d166ef20091a598105075eb4265
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Thu Jul  7 19:37:12 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Thu Jul  7 19:37:12 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=78fb9b4a

add top C,CP,CPV to /package pages

---
 server/package.py                |  131 ++++++++++++++++++++++++++++---------
 server/templates/package.html    |    9 +++
 server/templates/package_c.html  |   10 +++
 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>



             reply	other threads:[~2011-07-07 19:40 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-07 19:40 Vikraman Choudhury [this message]
  -- strict thread matches above, loose matches on Subject: below --
2011-08-11 20:41 [gentoo-commits] proj/gentoostats:master commit in: server/, server/templates/ Vikraman Choudhury
2011-08-03 23:45 Vikraman Choudhury
2011-08-03 21:52 Vikraman Choudhury
2011-07-17 21:51 Vikraman Choudhury
2011-07-09 17:09 Vikraman Choudhury
2011-07-07 16:02 Vikraman Choudhury
2011-07-03 18:04 Vikraman Choudhury
2011-06-14 17:43 Vikraman Choudhury
2011-05-06 14:42 Vikraman Choudhury

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=78fb9b4a76433d166ef20091a598105075eb4265.vikraman@gentoo \
    --to=vikraman.choudhury@gmail.com \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox