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)))
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)