def load_metadata_prefixes(): """ Load default metadata prefixes for OAI-PMH """ metadataPrefixes = OaiMyMetadataFormat.objects.all() if len(metadataPrefixes) == 0: #Add OAI_DC metadata prefix schemaURL = "http://www.openarchives.org/OAI/2.0/oai_dc.xsd" file = open(os.path.join(SITE_ROOT, 'oai_pmh', 'resources', 'xsd', 'oai_dc.xsd'),'r') xsdContent = file.read() dom = etree.fromstring(xsdContent.encode('utf-8')) if 'targetNamespace' in dom.find(".").attrib: metadataNamespace = dom.find(".").attrib['targetNamespace'] or "namespace" else: metadataNamespace = "http://www.w3.org/2001/XMLSchema" OaiMyMetadataFormat(metadataPrefix='oai_dc', schema=schemaURL, metadataNamespace=metadataNamespace, xmlSchema=xsdContent, isDefault=True).save()
def load_metadata_prefixes(): """ Load default metadata prefixes for OAI-PMH """ metadataPrefixes = OaiMyMetadataFormat.objects.all() if len(metadataPrefixes) == 0: #Add OAI_DC metadata prefix schemaURL = "http://www.openarchives.org/OAI/2.0/oai_dc.xsd" file = open( os.path.join(SITE_ROOT, 'oai_pmh', 'resources', 'xsd', 'oai_dc.xsd'), 'r') xsdContent = file.read() dom = etree.fromstring(xsdContent.encode('utf-8')) if 'targetNamespace' in dom.find(".").attrib: metadataNamespace = dom.find( ".").attrib['targetNamespace'] or "namespace" else: metadataNamespace = "http://www.w3.org/2001/XMLSchema" OaiMyMetadataFormat(metadataPrefix='oai_dc', schema=schemaURL, metadataNamespace=metadataNamespace, xmlSchema=xsdContent, isDefault=True).save() #Add NMRR templates as metadata prefixes templates = { 'all': { 'path': 'res-md.xsd', 'metadataPrefix': 'oai_all' }, 'organization': { 'path': 'res-md.xsd', 'metadataPrefix': 'oai_org' }, 'datacollection': { 'path': 'res-md.xsd', 'metadataPrefix': 'oai_datacol' }, 'repository': { 'path': 'res-md.xsd', 'metadataPrefix': 'oai_repo' }, 'projectarchive': { 'path': 'res-md.xsd', 'metadataPrefix': 'oai_proj' }, 'database': { 'path': 'res-md.xsd', 'metadataPrefix': 'oai_database' }, 'dataset': { 'path': 'res-md.xsd', 'metadataPrefix': 'oai_dataset' }, 'service': { 'path': 'res-md.xsd', 'metadataPrefix': 'oai_serv' }, 'informational': { 'path': 'res-md.xsd', 'metadataPrefix': 'oai_info' }, 'software': { 'path': 'res-md.xsd', 'metadataPrefix': 'oai_soft' }, } for template_name, info in templates.iteritems(): try: template = Template.objects.get(title=template_name, filename=info['path']) #Check if the XML is well formed try: xml_schema = template.content dom = etree.fromstring(xml_schema.encode('utf-8')) if 'targetNamespace' in dom.find(".").attrib: metadataNamespace = dom.find( ".").attrib['targetNamespace'] or "namespace" else: metadataNamespace = "http://www.w3.org/2001/XMLSchema" except XMLSyntaxError: print( 'ERROR : Impossible to set the template "%s" as a metadata prefix. The template XML is not well formed.' % template_name) #Create a schema URL schemaURL = OAI_HOST_URI + reverse('getXSD', args=[template.filename]) #Add in database OaiMyMetadataFormat(metadataPrefix=info['metadataPrefix'], schema=schemaURL, metadataNamespace=metadataNamespace, xmlSchema='', isDefault=False, isTemplate=True, template=template).save() except Exception, e: print( 'ERROR : Impossible to set the template "{!s}" as a metadata prefix. {!s}' .format(template_name, e.message))