From dbd87d22ab8bd08c4002928d7e989093703fd60a Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sat, 20 Sep 2014 23:50:34 +0200 Subject: [PATCH] move handle_loaders into AbstractElement --- weboob/tools/browser2/elements.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/weboob/tools/browser2/elements.py b/weboob/tools/browser2/elements.py index e63a3b0a85..e5fd3455d9 100644 --- a/weboob/tools/browser2/elements.py +++ b/weboob/tools/browser2/elements.py @@ -54,6 +54,8 @@ def __init__(self, page, parent=None, el=None): else: self.env = deepcopy(page.params) + self.loaders = {} + def use_selector(self, func): if isinstance(func, _Filter): value = func(self) @@ -73,6 +75,17 @@ def cssselect(self, *args, **kwargs): def xpath(self, *args, **kwargs): return self.el.xpath(*args, **kwargs) + def handle_loaders(self): + for attrname in dir(self): + m = re.match('load_(.*)', attrname) + if not m: + continue + name = m.group(1) + if name in self.loaders: + continue + loader = getattr(self, attrname) + self.loaders[name] = self.use_selector(loader) + class ListElement(AbstractElement): item_xpath = None @@ -199,7 +212,6 @@ def __init__(self, *args, **kwargs): super(ItemElement, self).__init__(*args, **kwargs) self.logger = getLogger(self.__class__.__name__.lower()) self.obj = None - self.loaders = {} def build_object(self): if self.klass is None: @@ -232,17 +244,6 @@ def __iter__(self): yield self.obj - def handle_loaders(self): - for attrname in dir(self): - m = re.match('load_(.*)', attrname) - if not m: - continue - name = m.group(1) - if name in self.loaders: - continue - loader = getattr(self, attrname) - self.loaders[name] = self.use_selector(loader) - def handle_attr(self, key, func): try: value = self.use_selector(func) -- GitLab