Example #1
0
    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
Example #2
0
    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
Example #3
0
 def from_string(guid_str):
     return Guid(utils.guid_to_bytes(guid_str))