예제 #1
0
def base_uri(xc, p, contextItem, args):
    item = anytypeArg(xc, args, 0, "node()?", missingArgFallback=contextItem)
    if item == ():
        return ''
    if isinstance(item, (ModelObject, ModelDocument)):
        return UrlUtil.ensureUrl(item.modelDocument.uri)
    return ''
예제 #2
0
파일: FunctionFn.py 프로젝트: Arelle/Arelle
def base_uri(xc, p, contextItem, args):
    item = anytypeArg(xc, args, 0, "node()?", missingArgFallback=contextItem)
    if item == (): 
        return ''
    if isinstance(item, (ModelObject, ModelDocument)):
        return UrlUtil.ensureUrl(item.modelDocument.uri)
    return ''
예제 #3
0
 def insertFiling(self, rssItem, g):
     self.showStatus("insert filing")
     # accession graph -> document vertices
     new_filing = {'documents': []}
     if self.modelXbrl.modelDocument.creationSoftwareComment:
         new_filing['creation_software'] = self.modelXbrl.modelDocument.creationSoftwareComment
     datetimeNow = datetime.datetime.now()
     datetimeNowStr = XmlUtil.dateunionValue(datetimeNow)
     entryUri = modelObjectDocumentUri(self.modelXbrl)
     if rssItem is not None:  # sec accession
         # set self.
         new_filing['filingType'] = "SEC filing"
         # for an RSS Feed entry from SEC, use rss item's accession information
         new_filing['filingNumber'] = filingNumber = rssItem.accessionNumber
         new_filing['acceptedTimestamp'] = XmlUtil.dateunionValue(rssItem.acceptanceDatetime)
         new_filing['filingDate'] = XmlUtil.dateunionValue(rssItem.filingDate)
         new_filing['entityId'] = rssItem.cikNumber
         new_filing['entityName'] = rssItem.companyName
         new_filing['SICCode'] = rssItem.assignedSic 
         new_filing['SECHtmlUrl'] = rssItem.htmlUrl 
         new_filing['entryUrl'] = rssItem.url
         self.filingURI = rssItem.htmlUrl
     else:
         # not an RSS Feed item, make up our own accession ID (the time in seconds of epoch)
         intNow = int(time.time())
         new_filing['filingNumber'] = filingNumber = str(intNow)
         self.filingId = int(time.time())    # only available if entered from an SEC filing
         new_filing['filingType'] = "independent filing"
         new_filing['acceptedTimestamp'] = datetimeNowStr
         new_filing['filingDate'] = datetimeNowStr
         new_filing['entryUrl'] = UrlUtil.ensureUrl(self.modelXbrl.fileSource.url)
         self.filingURI = filingNumber
         
     g[FILINGS][self.filingURI] = new_filing
     self.filing = new_filing
         
     # for now only one report per filing (but SEC may have multiple in future, such as form SD)
     self.reportURI = modelObjectDocumentUri(self.modelXbrl)
     self.report = {'filing': self.filingURI,
                    'aspectProxies': {},
                    'relationshipSets': {},
                    'dataPoints': {},
                    'messages': {}}
     new_filing['reports'] = {self.reportURI: self.report}
         
     # relationshipSets are a dts property
     self.relationshipSets = [(arcrole, ELR, linkqname, arcqname)
                              for arcrole, ELR, linkqname, arcqname in self.modelXbrl.baseSets.keys()
                              if ELR and (arcrole.startswith("XBRL-") or (linkqname and arcqname))]
예제 #4
0
 def identifyPreexistingDocuments(self):
     self.existingDocumentUris = set()
     if not self.isJsonFile:
         docFilters = []
         for modelDocument in self.modelXbrl.urlDocs.values():
             if modelDocument.type == Type.SCHEMA:
                 docFilters.append('STR(?doc) = "{}"'.format(UrlUtil.ensureUrl(modelDocument.uri)))
         results = self.execute(
             # TBD: fix up for Mongo DB query
             "select", 
             query="""
                 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                 PREFIX DTS: <http://xbrl.org/2013/rdf/DTS/>
                 SELECT distinct ?doc WHERE { ?doc rdf:type DTS:Document 
                 FILTER( """ + '\n|| '.join(docFilters) + ") .}")
         try:
             for result in results['results']['bindings']:
                 doc = result['doc']
                 if doc.get('type') == 'uri':
                     self.existingDocumentUris.add(doc['value'])                    
         except KeyError:
             pass # no existingDocumentUris
예제 #5
0
def modelObjectDocumentUri(modelObject):
    return UrlUtil.ensureUrl(modelObject.modelDocument.uri)