[job] refactor parent-child config paths (#7527)
- fixes TypeError when enabling 'category-transfer' - fixes 'category-transfer' not applying to early config lookups
This commit is contained in:
@@ -47,35 +47,12 @@ class Job():
|
||||
self.kwdict = {}
|
||||
self.kwdict_eval = False
|
||||
|
||||
cfgpath = []
|
||||
if parent:
|
||||
if extr.category == parent.extractor.category or \
|
||||
extr.category in parent.parents:
|
||||
parents = parent.parents
|
||||
else:
|
||||
parents = parent.parents + (parent.extractor.category,)
|
||||
|
||||
if parents:
|
||||
for category in parents:
|
||||
cat = "{}>{}".format(category, extr.category)
|
||||
cfgpath.append((cat, extr.subcategory))
|
||||
cfgpath.append((category + ">*", extr.subcategory))
|
||||
cfgpath.append((extr.category, extr.subcategory))
|
||||
self.parents = parents
|
||||
else:
|
||||
self.parents = ()
|
||||
else:
|
||||
self.parents = ()
|
||||
|
||||
if extr.basecategory:
|
||||
if not cfgpath:
|
||||
cfgpath.append((extr.category, extr.subcategory))
|
||||
cfgpath.append((extr.basecategory, extr.subcategory))
|
||||
|
||||
cfgpath = self._build_config_path(parent)
|
||||
if cfgpath:
|
||||
if isinstance(cfgpath, list):
|
||||
extr.config = extr._config_shared
|
||||
extr.config_accumulate = extr._config_shared_accumulate
|
||||
extr._cfgpath = cfgpath
|
||||
extr.config = extr._config_shared
|
||||
extr.config_accumulate = extr._config_shared_accumulate
|
||||
|
||||
actions = extr.config("actions")
|
||||
if actions:
|
||||
@@ -93,16 +70,6 @@ class Job():
|
||||
extr.log = self._wrap_logger(extr.log)
|
||||
extr.log.debug("Using %s for '%s'", extr.__class__.__name__, extr.url)
|
||||
|
||||
# data from parent job
|
||||
if parent:
|
||||
pextr = parent.extractor
|
||||
|
||||
# transfer (sub)category
|
||||
if pextr.config("category-transfer", pextr.categorytransfer):
|
||||
extr._cfgpath = pextr._cfgpath
|
||||
extr.category = pextr.category
|
||||
extr.subcategory = pextr.subcategory
|
||||
|
||||
self.metadata_url = extr.config2("metadata-url", "url-metadata")
|
||||
self.metadata_http = extr.config2("metadata-http", "http-metadata")
|
||||
metadata_path = extr.config2("metadata-path", "path-metadata")
|
||||
@@ -134,6 +101,41 @@ class Job():
|
||||
else:
|
||||
self.kwdict.update(kwdict)
|
||||
|
||||
def _build_config_path(self, parent):
|
||||
extr = self.extractor
|
||||
cfgpath = []
|
||||
|
||||
if parent:
|
||||
pextr = parent.extractor
|
||||
if extr.category == pextr.category or \
|
||||
extr.category in parent.parents:
|
||||
parents = parent.parents
|
||||
else:
|
||||
parents = parent.parents + (pextr.category,)
|
||||
self.parents = parents
|
||||
|
||||
if pextr.config("category-transfer", pextr.categorytransfer):
|
||||
extr.category = pextr.category
|
||||
extr.subcategory = pextr.subcategory
|
||||
return pextr._cfgpath
|
||||
|
||||
if parents:
|
||||
sub = extr.subcategory
|
||||
for category in parents:
|
||||
cat = "{}>{}".format(category, extr.category)
|
||||
cfgpath.append((cat, sub))
|
||||
cfgpath.append((category + ">*", sub))
|
||||
cfgpath.append((extr.category, sub))
|
||||
else:
|
||||
self.parents = ()
|
||||
|
||||
if extr.basecategory:
|
||||
if not cfgpath:
|
||||
cfgpath.append((extr.category, extr.subcategory))
|
||||
cfgpath.append((extr.basecategory, extr.subcategory))
|
||||
|
||||
return cfgpath
|
||||
|
||||
def run(self):
|
||||
"""Execute or run the job"""
|
||||
extractor = self.extractor
|
||||
|
||||
Reference in New Issue
Block a user