def addAllPagesToRoot(logical_struct_map,dict_tree): if isinstance(logical_struct_map, dict): root_id = logical_struct_map['@ID'] physical_struct_map = phys_struct_map_tools.get(dict_tree) all_pages = phys_struct_map_tools.getPages(physical_struct_map,details=True) # Add all pages (phys_list) to root dict_tree = struct_link_tools.addLinks(dict_tree, root_id, all_pages) #pprint.pprint(struct_link) else: err = 'Multiple root detected - not allowed' raise ValueError(err) return dict_tree
def addPagesOnLevel(logical_struct_map,dict_tree): div_key = '{http://www.loc.gov/METS/}div' if isinstance(logical_struct_map, dict): # Only one root parent_id = logical_struct_map['@ID'] if struct_link_tools.exists(dict_tree, parent_id): # Current element already has pages return children_ids = log_struct_map_tools.getChildrenLogIds(logical_struct_map) if not children_ids: # No children - dammit return if div_key in logical_struct_map: # Recursively handle subtree before adding pages to this element addPagesOnLevel(logical_struct_map[div_key],dict_tree) phys_list = struct_link_tools.getPhysListByLogIds(dict_tree, children_ids) # Add children pages (phys_list) to parent (parent_id) dict_tree = struct_link_tools.addLinks(dict_tree, parent_id, phys_list) #pprint.pprint(struct_link) elif isinstance(logical_struct_map, list): # Multiple branches for branch in logical_struct_map: addPagesOnLevel(branch,dict_tree) return dict_tree