summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Laszlo <tim.laszlo@gmail.com>2012-05-22 14:59:46 -0500
committerTim Laszlo <tim.laszlo@gmail.com>2012-05-22 15:01:45 -0500
commitba48c23030259f46174645d6af3ffda186fa279a (patch)
treee934b04cbbb192dc3757b8eeeac21c9de660e663
parent20b6ed1534baa538d382bba6b369d7e74e95469a (diff)
downloadbcfg2-ba48c23030259f46174645d6af3ffda186fa279a.tar.gz
bcfg2-ba48c23030259f46174645d6af3ffda186fa279a.tar.bz2
bcfg2-ba48c23030259f46174645d6af3ffda186fa279a.zip
Pkgmgr: Fix broken altsrc
Use __contains__ instead of has_key in Pkgmgr. Gone in Py3k. Fallback on __getitem__ in PrioDir. Handles cased with an override for __getitem__ is used.
-rw-r--r--src/lib/Server/Plugin.py3
-rw-r--r--src/lib/Server/Plugins/Pkgmgr.py10
2 files changed, 9 insertions, 4 deletions
diff --git a/src/lib/Server/Plugin.py b/src/lib/Server/Plugin.py
index fa5e3ca9d..3e3616f46 100644
--- a/src/lib/Server/Plugin.py
+++ b/src/lib/Server/Plugin.py
@@ -881,6 +881,9 @@ class PrioDir(Plugin, Generator, XMLDirectoryBacked):
if self._matches(entry, metadata, [rname]):
data = matching[index].cache[1][entry.tag][rname]
break
+ else:
+ # Fall back on __getitem__. Required if override used
+ data = matching[index].cache[1][entry.tag][entry.get('name')]
if '__text__' in data:
entry.text = data['__text__']
if '__children__' in data:
diff --git a/src/lib/Server/Plugins/Pkgmgr.py b/src/lib/Server/Plugins/Pkgmgr.py
index bc11bfdcf..2a8623379 100644
--- a/src/lib/Server/Plugins/Pkgmgr.py
+++ b/src/lib/Server/Plugins/Pkgmgr.py
@@ -25,12 +25,14 @@ class FuzzyDict(dict):
print("got non-string key %s" % str(key))
return dict.__getitem__(self, key)
- def has_key(self, key):
+ def __contains__(self, key):
if isinstance(key, str):
mdata = self.fuzzy.match(key)
- if self.fuzzy.match(key):
- return dict.has_key(self, mdata.groupdict()['name'])
- return dict.has_key(self, key)
+ if mdata:
+ return dict.__contains__(self, mdata.groupdict()['name'])
+ else:
+ print("got non-string key %s" % str(key))
+ return dict.__contains__(self, key)
def get(self, key, default=None):
try: