bodhi/controllers.py | 41 ++++++++++++++++++++++++++++++++++++++++-
1 file changed, 40 insertions(+), 1 deletion(-)
New commits:
commit 1d04e9e1a2e290277d8051a267def7c06ba537f3
Author: Luke Macken <lmacken(a)redhat.com>
Date: Thu Mar 19 18:22:30 2009 -0400
Add validators to our list method
diff --git a/bodhi/controllers.py b/bodhi/controllers.py
index 083aff8..2025ccd 100644
--- a/bodhi/controllers.py
+++ b/bodhi/controllers.py
@@ -250,6 +250,19 @@ class Root(controllers.RootController):
@expose(template="bodhi.templates.list", allow_json=True)
@paginate('updates', limit=20, allow_limit_override=True)
+ @validate(validators={
+ 'release': validators.UnicodeString(),
+ 'bugs': validators.UnicodeString(),
+ 'cves': validators.UnicodeString(),
+ 'status': validators.UnicodeString(),
+ 'type_': validators.UnicodeString(),
+ 'package': validators.UnicodeString(),
+ 'mine': validators.StringBool(),
+ 'stringify': validators.StringBool(),
+ 'get_auth': validators.StringBool(),
+ 'username': validators.UnicodeString(),
+ 'group_updates': validators.StringBool(),
+ })
def list(self, release=None, bugs=None, cves=None, status=None, type_=None,
package=None, mine=False, stringify=False, get_auth=False,
username=None, group_updates=False, **kw):
commit 161b46ecfe0f6de1f00882e907d57a924e931440
Author: Luke Macken <lmacken(a)redhat.com>
Date: Thu Mar 19 18:22:13 2009 -0400
Add a group_updates parameter to our list method
diff --git a/bodhi/controllers.py b/bodhi/controllers.py
index faced31..083aff8 100644
--- a/bodhi/controllers.py
+++ b/bodhi/controllers.py
@@ -252,7 +252,7 @@ class Root(controllers.RootController):
@paginate('updates', limit=20, allow_limit_override=True)
def list(self, release=None, bugs=None, cves=None, status=None, type_=None,
package=None, mine=False, stringify=False, get_auth=False,
- username=None):
+ username=None, group_updates=False, **kw):
""" Return a list of updates based on given parameters
"""
log.debug('list(%s)' % locals())
query = []
@@ -359,6 +359,32 @@ class Root(controllers.RootController):
results.append(dict_up)
updates = results
+ if group_updates:
+ packages = {}
+ for update in updates:
+ for build in update.builds:
+ if build.package.name not in packages:
+ packages[build.package.name] = {
+ 'package_name' : build.package.name,
+ 'dist_updates': []
+ }
+ else:
+ skip = False
+ for up in packages[build.package.name]['dist_updates']:
+ if up['release'] == update.release.long_name:
+ skip = True
+ break
+ if skip:
+ break
+ packages[build.package.name]['dist_updates'].append({
+ 'release': update.release.long_name,
+ 'version':
'-'.join(build.nvr.split('-')[-2:])
+ })
+ packages[build.package.name]['dist_updates'][-1].update(
+ dict(update._reprItems()))
+
del(packages[build.package.name]['dist_updates'][-1]['releaseID'])
+ updates = [packages[pkg] for pkg in packages]
+
if isinstance(updates, list): num_items = len(updates)
else: num_items = updates.count()
if stringify: updates = map(unicode, updates)