Closed kkadu closed 1 month ago
The report objects should have an ancestors property which is a list of containing folders. You can filter with that.
Checked and the folder list you get is only the top level because they also have an ancestors list. https://demo.microstrategy.com/MicroStrategyLibrary/api-docs/index.html#/Browsing/getRootFolder
Probably a more Pythonic way to do this, but here's one I did to exclude a bunch of standardized objects I wasn't interested in.
resultsFiltered = []
for r in results:
if 'ancestors' in r:
if len(r['ancestors']) >1:
if r['ancestors'][1]['name'] in ["System Objects","Object Templates","AutoStyles","Themes"]:
continue
if len(r['ancestors']) >2:
if r['ancestors'][2]['name'] in ["AutoStyles","Themes"]:
continue
resultsFiltered.append(r)
Functionality supports getting children now. Closing
USE CASE: I am planning to get list of all reports in my project using MSTRIO, however because of the large environment we have, I am planning to exclude reports from certain folders (using filters with
list_reports
, like PROFILE and USER SHARED). This would require me get a list of all folders first and then get list of reports from those folders (excluding the ones I don't need) in a loop format.ISSUE: To get a list of all folders in the project, I am using
list_folders
module fromobject_management
package. The documentation mentions that it should "Get a list of folders - either all folders in a specific project or all folders that are outside of projects, called configuration-level folders."However, when I execute the
list_folders
at the project level (folder_list = list_folders(conn, project_id=PROJECT_ID)
), I only get the higher level folder (ancestors for those folders is level = 1) and we do not get "all" folders in the project i.e. the sub-folders or recursive folders as we do forlist_reports
etc.EXPECTATION: The expectation should be that
list_folders
should generate a list of all folders within the project and not just the level 2.