[yum-cvs] yum/yum __init__.py,1.164,1.165 comps.py,1.5,1.6

Seth Vidal skvidal at login.linux.duke.edu
Fri Dec 9 15:32:02 UTC 2005


Update of /home/groups/yum/cvs/yum/yum
In directory login:/tmp/cvs-serv31898/yum

Modified Files:
	__init__.py comps.py 
Log Message:

many changes to comps. Cleans up the interface quite a bit.


Index: __init__.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/__init__.py,v
retrieving revision 1.164
retrieving revision 1.165
diff -u -r1.164 -r1.165
--- __init__.py	7 Dec 2005 16:51:36 -0000	1.164
+++ __init__.py	9 Dec 2005 15:32:00 -0000	1.165
@@ -1210,7 +1210,7 @@
         installed = []
         available = []
         
-        for grp in self.comps.groups.values():
+        for grp in self.comps.groups:
             if grp.installed:
                 if uservisible:
                     if grp.user_visible:
@@ -1233,10 +1233,13 @@
         if not self.comps:
             self.doGroupSetup()
         
-        if not self.comps.groups.has_key(grpid):
+        if not self.comps.has_grou(grpid):
+            raise Errors.GroupsError, "No Group named %s exists" % grpid
+            
+        thisgroup = self.comps.return_group(grpid)
+        if not thisgroup:
             raise Errors.GroupsError, "No Group named %s exists" % grpid
             
-        thisgroup = self.comps.groups[grpid]
         pkgs = thisgroup.packages
         for pkg in thisgroup.packages:
             p = self.rpmdb.installed(name=pkg)
@@ -1250,10 +1253,14 @@
         if not self.comps:
             self.doGroupSetup()
         
-        if not self.comps.groups.has_key(grpid):
+        if not self.comps.has_grou(grpid):
             raise Errors.GroupsError, "No Group named %s exists" % grpid
             
-        thisgroup = self.comps.groups[grpid]
+        thisgroup = self.comps.return_group(grpid)
+        
+        if not thisgroup:
+            raise Errors.GroupsError, "No Group named %s exists" % grpid
+        
         if thisgroup.selected:
             return 
         
@@ -1275,10 +1282,13 @@
         if not self.comps:
             self.doGroupSetup()
         
-        if not self.comps.groups.has_key(grpid):
+        if not self.comps.has_group(grpid):
             raise Errors.GroupsError, "No Group named %s exists" % grpid
             
-        thisgroup = self.comps.groups[grpid]
+        thisgroup = self.comps.return_group(grpid)
+        if not thisgroup:
+            raise Errors.GroupsError, "No Group named %s exists" % grpid
+        
         thisgroup.selected = False
         
         for pkgname in thisgroup.packages:

Index: comps.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/comps.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- comps.py	28 Oct 2005 04:20:19 -0000	1.5
+++ comps.py	9 Dec 2005 15:32:00 -0000	1.6
@@ -44,6 +44,7 @@
         self.default_packages = {}
         self.langonly = None ## what the hell is this?
         self.groupid = None
+        self.display_order = 0
         self.installed = False
         
 
@@ -110,6 +111,9 @@
             elif child.tag == 'uservisible':
                 self.user_visible = parse_boolean(child.text)
     
+            elif child.tag == 'display_order':
+                self.display_order = parse_boolean(child.text)
+
             elif child.tag == 'default':
                 self.default = parse_boolean(child.text)
     
@@ -173,6 +177,7 @@
         self.description = ""
         self.translated_name = {}
         self.translated_description = {}
+        self.display_order = 0
         self._groups = {}        
 
         if elem:
@@ -219,6 +224,9 @@
             elif child.tag == 'grouplist':
                 self.parse_group_list(child)
 
+            elif child.tag == 'display_order':
+                self.display_order = parse_boolean(child.text)
+
     def parse_group_list(self, grouplist_elem):
         for child in grouplist_elem:
             if child.tag == 'groupid':
@@ -243,13 +251,61 @@
         
 class Comps:
     def __init__(self, overwrite_groups=False):
-        self.groups = {}
-        self.categories = {}
+        self._groups = {}
+        self._categories = {}
         self.compscount = 0
         self.overwrite_groups = overwrite_groups
         self.compiled = False # have groups been compiled into avail/installed 
                               # lists, yet.
-                              
+    
+    
+    def __sort_order(self, item1, item2):
+        if item1.display_order > item2.display_order:
+            return 1
+        elif item1.display_order == item2.display_order:
+            return 0
+        else:
+            return -1
+    
+    def get_groups(self):
+        grps = self._groups.values()
+        grps.sort(self.__sort_order)
+        return grps
+        
+    def get_categories(self):
+        cats = self._categories.values()
+        cats.sort(self.__sort_order)
+        return cats
+        
+    
+    groups = property(get_groups)
+    categories = property(get_categories)
+    
+    
+    
+    def has_group(self, grpid):
+        exists = self.return_group(grpid)
+            
+        if exists:
+            return True
+            
+        return False
+    
+    def return_group(self, grpid):
+        if self._groups.has_key(grpid):
+            return self._groups(grpid)
+        
+        # do matches against group names and ids, too
+        for group in self.groups:
+            names = [ group.name, group.groupid ]
+            names.extend(group.translated_name.values())
+            if grpid in names:
+                return group
+
+        
+        return None
+
+
     def add(self, srcfile = None):
         if not srcfile:
             raise CompsException
@@ -269,19 +325,19 @@
         for event, elem in parser:
             if elem.tag == "group":
                 group = Group(elem)
-                if self.groups.has_key(group.groupid):
-                    thatgroup = self.groups[group.groupid]
+                if self._groups.has_key(group.groupid):
+                    thatgroup = self._groups[group.groupid]
                     thatgroup.add(group)
                 else:
-                    self.groups[group.groupid] = group
+                    self._groups[group.groupid] = group
 
             if elem.tag == "category":
                 category = Category(elem)
-                if self.categories.has_key(category.categoryid):
-                    thatcat = self.categories[category.categoryid]
+                if self._categories.has_key(category.categoryid):
+                    thatcat = self._categories[category.categoryid]
                     thatcat.add(category)
                 else:
-                    self.categories[category.categoryid] = category
+                    self._categories[category.categoryid] = category
         
         del parser
         
@@ -294,7 +350,7 @@
             inst_pkg_names[n] = 1
         
 
-        for group in self.groups.values():
+        for group in self.groups:
             # if it has any mandatory or default packages in the group, then
             # make sure they're all installed, if any are missing then
             # the group is not installed.
@@ -323,12 +379,12 @@
         for srcfile in sys.argv[1:]:
             p.add(srcfile)
 
-        for group in p.groups.values():
+        for group in p.groups:
             print group
             for pkg in group.packages:
                 print '  ' + pkg
         
-        for category in p.categories.values():
+        for category in p.categories:
             print category.name
             for group in category.groups:
                 print '  ' + group




More information about the Yum-cvs-commits mailing list