Reimplemented repa list to match grouping implementation
authorEd Bartosh <eduard.bartosh@intel.com>
Fri, 16 Aug 2013 13:06:24 +0000 (16:06 +0300)
committerEd Bartosh <eduard.bartosh@intel.com>
Sat, 17 Aug 2013 09:10:28 +0000 (12:10 +0300)
As grouping is done by creating submitgroup projects repa list now
gets list of related groups differently. Previously it was getting it
from special  'groups' project. Now it analyses all *:submitgroup:*
projects and picks up only groups, related to the listed submissions.

Change-Id: I181a4525706ac066fc95941d7ba80a7154105b82
Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
repa/list.py

index 7f1f514ef02784a39939c9dfca42c5d508745d30..2af2ec26e0078cb13393ae65ba793402775f5e41 100755 (executable)
@@ -31,42 +31,32 @@ def get_status(obs, project):
     return 'packages: ' + status
 
 
-def get_groups(obs):
-    """Get information about submission groups from home:prerelease:groups."""
-    project = OBS_PREFIX + 'groups'
-    if not obs.exists(project):
-        return {}
-    return json.loads(obs.get_description(project))
-
-
 def list_submissions(obs, regexp):
     """List submissions and groups."""
     # submissions
-    related_groups = []
+    submissions = set()
     header = True
     for project, desc in obs.get_projects('^%s.*%s' % (OBS_PREFIX, regexp)):
+        if ':submitgroup:' in project:
+            continue
         meta = json.loads(desc)
+        submissions.add(meta['git_tag'])
         if header:
             print ':::: Submissions:'
             header = False
         print meta['git_tag'], meta['obs_target_prj'], \
               get_status(obs, project)
-        related_groups.extend(meta.get('groups') or [])
-
-    # groups
-    all_groups = get_groups(obs)
-    if not all_groups: # no groups found
-        return
-    groups = []
-    for group in related_groups:
-        ginfo = all_groups.get(group)
-        if ginfo:
-            groups.append(group, ginfo['status'])
-        #else: warning: group mentioned in submission, but doesn't exist
-    if groups:
-        print ':::: Groups:'
-        for group in groups:
-            print group[0], group[1]
+
+    # Groups, related to selected submissions
+    header = True
+    for project, desc in obs.get_projects('^%ssubmitgroup' % OBS_PREFIX):
+        meta = json.loads(desc)
+        lsub = set(meta['submissions'])
+        if lsub.intersection(submissions):
+            if header:
+                print ':::: Groups:'
+                header = False
+            print meta['name'], ','.join(subm.split('/')[-1] for subm in lsub)
 
 
 class List(object):