[FIX] base_import_module: don't assume data/ exists
Before this commit, while performing a check on whether a customization being imported was done using studio or not, we would assume that the .zip would, at the very least, contain a data folder. This is not the case as loose files can be imported and the data folder is only generated by studio customizations. To solve this, we walk over the whole zip instead of walking over the data/ folder only (which may be non-existant), so loose files, files inside the data folder and potentially files in other folders can be parsed without raising unexpected errors.
This commit is contained in:
@@ -145,12 +145,13 @@ def _is_studio_custom(path):
|
||||
Returns True if any of the records contains a context with the key
|
||||
studio in it, False if none of the records do
|
||||
"""
|
||||
path = os.path.join(path, 'data')
|
||||
filenames = next(iter(os.walk(path)))[2]
|
||||
filenames = [f for f in filenames if f.lower().endswith('.xml')]
|
||||
filepaths = []
|
||||
for level in os.walk(path):
|
||||
filepaths += [os.path.join(level[0], fn) for fn in level[2]]
|
||||
filepaths = [fp for fp in filepaths if fp.lower().endswith('.xml')]
|
||||
|
||||
for filename in filenames:
|
||||
root = lxml.etree.parse(os.path.join(path, filename)).getroot()
|
||||
for fp in filepaths:
|
||||
root = lxml.etree.parse(fp).getroot()
|
||||
|
||||
for record in root:
|
||||
# there might not be a context if it's a non-studio module
|
||||
|
||||
Reference in New Issue
Block a user