示例#1
0
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
示例#2
0
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