Exemplo n.º 1
0
 def insertResources(self):
     self.showStatus("insert resources")
     table = self.getTable('resource', 'resource_id', 
                           ('role_uri_id', 'qname_id', 'document_id', 'document_line_number', 'document_column_number'), 
                           ('role_uri_id', 'qname_id', 'document_id', 'document_line_number', 'document_column_number'), 
                           tuple((self.uriId[resource.role],
                                  self.qnameId[resource.qname],
                                  self.documentIds[resource.modelDocument.uri],
                                  resource.sourceline,
                                  0)
                                 for arcrole in (XbrlConst.conceptLabel, XbrlConst.conceptReference)
                                 for rel in self.modelXbrl.relationshipSet(arcrole).modelRelationships
                                 for resource in (rel.fromModelObject, rel.toModelObject)
                                 if isinstance(resource, ModelResource)))
     self.resourceId = dict(((roleId, qnId, docId, line, offset), id)
                            for id, roleId, qnId, docId, line, offset in table)
     
     self.showStatus("insert labels")
     table = self.getTable('label_resource', 'resource_id', 
                           ('resource_id', 'label', 'xml_lang'), 
                           ('resource_id',), 
                           tuple((self.resourceId[self.uriId[resource.role],
                                                  self.qnameId[resource.qname],
                                                  self.documentIds[resource.modelDocument.uri],
                                                  resource.sourceline,
                                                  0],
                                  resource.elementText,
                                  resource.xmlLang)
                                 for arcrole in (XbrlConst.conceptLabel, XbrlConst.conceptReference)
                                 for rel in self.modelXbrl.relationshipSet(arcrole).modelRelationships
                                 for resource in (rel.fromModelObject, rel.toModelObject)
                                 if isinstance(resource, ModelResource) and XbrlConst.isLabelRole(resource.role)))
Exemplo n.º 2
0
 def insertResources(self):
     self.showStatus("insert resources")
     # deduplicate resources (may be on multiple arcs)
     # note that lxml has no column numbers, use objectIndex as pseudo-column number
     uniqueResources = dict(((self.documentIds[resource.modelDocument.uri],
                              resource.sourceline,
                              resource.objectIndex), resource)
                            for arcrole in (XbrlConst.conceptLabel, XbrlConst.conceptReference)
                            for rel in self.modelXbrl.relationshipSet(arcrole).modelRelationships
                            if rel.fromModelObject is not None and rel.toModelObject is not None
                            for resource in (rel.fromModelObject, rel.toModelObject)
                            if isinstance(resource, ModelResource))
     table = self.getTable('resource', 'resource_id', 
                           ('role_uri_id', 'qname_id', 'document_id', 'document_line_number', 'document_column_number'), 
                           ('document_id', 'document_line_number', 'document_column_number'), 
                           tuple((self.uriId[resource.role],
                                  self.qnameId[resource.qname],
                                  self.documentIds[resource.modelDocument.uri],
                                  resource.sourceline,
                                  resource.objectIndex)
                                 for resource in uniqueResources.values()),
                           checkIfExisting=True)
     self.resourceId = dict(((docId, line, offset), id)
                            for id, docId, line, offset in table)
     
     self.showStatus("insert labels")
     table = self.getTable('label_resource', 'resource_id', 
                           ('resource_id', 'label', 'xml_lang'), 
                           ('resource_id',), 
                           tuple((self.resourceId[self.documentIds[resource.modelDocument.uri],
                                                  resource.sourceline,
                                                  resource.objectIndex],
                                  resource.textValue,
                                  resource.xmlLang)
                                 for arcrole in (XbrlConst.conceptLabel, XbrlConst.conceptReference)
                                 for rel in self.modelXbrl.relationshipSet(arcrole).modelRelationships
                                 if rel.fromModelObject is not None and rel.toModelObject is not None
                                 for resource in (rel.fromModelObject, rel.toModelObject)
                                 if isinstance(resource, ModelResource) and XbrlConst.isLabelRole(resource.role)),
                           checkIfExisting=True)