fix iter_caps() to not return only immediate base cap classes

This commit is contained in:
Romain Bignon 2011-05-03 16:11:14 +02:00
commit f603c44d6c
2 changed files with 10 additions and 7 deletions

View file

@ -82,9 +82,7 @@ class Module(object):
return self.klass.ICON
def iter_caps(self):
for cap in self.klass.__bases__:
if issubclass(cap, IBaseCap) and cap != IBaseCap:
yield cap
return self.klass.iter_caps()
def has_caps(self, *caps):
for c in caps:

View file

@ -193,10 +193,15 @@ class BaseBackend(object):
return self.BROWSER(*args, **kwargs)
def iter_caps(self):
for cap in self.__class__.__bases__:
if issubclass(cap, IBaseCap) and cap != IBaseCap:
yield cap
@classmethod
def iter_caps(klass):
def iter_caps(cls):
for base in cls.__bases__:
if issubclass(base, IBaseCap) and base != IBaseCap:
yield base
for cap in iter_caps(base):
yield cap
return iter_caps(klass)
def has_caps(self, *caps):
for c in caps: