def _load_classes(self): if self.meta_classes: return tree = etree.parse(os.path.join(os.path.dirname(__file__), 'classID.xml')) file_groups = { group.attrib['name']: { file.attrib['id']: (file.attrib['name'], file.attrib['content_type']) for file in group.getiterator('file')} for group in tree.getiterator('type') } self.meta_classes = {} for cls in tree.getiterator('class'): meta_class = Ref( utils.guid_to_bytes(cls.attrib['id']), cls.attrib['single']) meta_class.type = cls.attrib['type'] if 'type' in cls.attrib else None meta_class.multiple = cls.attrib['multiple'] if 'multiple' in cls.attrib else meta_class.name meta_class.files = { file.attrib['id']: (file.attrib['name'], file.attrib['content_type']) for file in cls.getiterator('file') } if len(meta_class.files) == 0 and meta_class.type is not None and meta_class.type in file_groups: meta_class.files = file_groups[meta_class.type] self.meta_classes[utils.guid_to_bytes(cls.attrib['id'])] = meta_class
def _load_classes(self): if self.meta_classes: return tree = etree.parse( os.path.join(os.path.dirname(__file__), 'classID.xml')) file_groups = { group.attrib['name']: { file.attrib['id']: (file.attrib['name'], file.attrib['content_type']) for file in group.getiterator('file') } for group in tree.getiterator('type') } self.meta_classes = {} for cls in tree.getiterator('class'): meta_class = Ref(utils.guid_to_bytes(cls.attrib['id']), cls.attrib['single']) meta_class.type = cls.attrib[ 'type'] if 'type' in cls.attrib else None meta_class.multiple = cls.attrib[ 'multiple'] if 'multiple' in cls.attrib else meta_class.name meta_class.files = { file.attrib['id']: (file.attrib['name'], file.attrib['content_type']) for file in cls.getiterator('file') } if len( meta_class.files ) == 0 and meta_class.type is not None and meta_class.type in file_groups: meta_class.files = file_groups[meta_class.type] self.meta_classes[utils.guid_to_bytes( cls.attrib['id'])] = meta_class
def from_string(guid_str): return Guid(utils.guid_to_bytes(guid_str))