[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