OAI-PMH Producer

Using to provide RIF-CS

Minimal providers for Dublin Core and RIF-CS are included in the app.

To enable the app, include tardis.apps.oaipmh in settings.INSTALLED_APPS.

Your OAI-PMH query endpoint will be on: http://mytardis-example.com/apps/oaipmh/

Implementing your own providers

To allow multiple metadata formats (and types within them) the tardis.apps.oaipmh.server.ProxyingServer handles all requests and proxies them to the providers specified in settings.OAIPMH_PROVIDERS.

You should extend tardis.apps.oaipmh.provider.base.BaseProvider or one of the existing providers if you wish to extend the functionality in a site-specific way.

class tardis.apps.oaipmh.provider.base.BaseProvider(site)

A base provider which roughly implements the PyOAI interface for OAI-PMH servers.

Extend this if you’re writing your own provider for a new type or a different metadata format.

getRecord(metadataPrefix, identifier)

Get a record for a metadataPrefix and identifier.

Parameters
  • metadataPrefix (string) – identifies metadata set to retrieve

  • identifier (string) –

    • repository-unique identifier of record

Raises
  • oaipmh.error.CannotDisseminateFormatError – if metadataPrefix is unknown or not supported by identifier.

  • oaipmh.error.IdDoesNotExistError – if identifier is unknown or illegal.

Returns

a header, metadata, about tuple describing the record.

identify()

Retrieve information about the repository.

Returns an Identify object describing the repository.

listIdentifiers(metadataPrefix, set=None, from_=None, until=None)

Get a list of header information on records.

Parameters
  • metadataPrefix (string) – identifies metadata set to retrieve

  • set (string) – set identifier; only return headers in set

  • from (datetime) – only retrieve headers from from_ date forward (in naive UTC)

  • until (datetime) – only retrieve headers with dates up to and including until date (in naive UTC)

Raises
  • error.CannotDisseminateFormatError – if metadataPrefix is not supported by the repository.

  • error.NoSetHierarchyError – if the repository does not support sets.

Returns

an iterable of headers.

listMetadataFormats(identifier=None)

List metadata formats supported by repository or record.

Parameters

identifier (string) – identify record for which we want to know all supported metadata formats. If absent, list all metadata formats supported by repository.

Raises
  • error.IdDoesNotExistError – if record with identifier does not exist.

  • error.NoMetadataFormatsError – if no formats are available for the indicated record.

Returns

an iterable of metadataPrefix, schema, metadataNamespace tuples (each entry in the tuple is a string).

listRecords(metadataPrefix, set=None, from_=None, until=None)

Get a list of header, metadata and about information on records.

Parameters
  • metadataPrefix (string) – identifies metadata set to retrieve

  • set (string) – set identifier; only return records in set

  • from (datetime) – only retrieve records from from_ date forward (in naive UTC)

  • until (datetime) – only retrieve records with dates up to and including until date (in naive UTC)

Raises
  • oaipmh.error.CannotDisseminateFormatError – if metadataPrefix is not supported by the repository.

  • oaipmh.error.NoSetHierarchyError – if the repository does not support sets.

Returns

an iterable of header, metadata, about tuples.

listSets()

Get a list of sets in the repository.

Raises

error.NoSetHierarchyError – if the repository does not support sets.

Returns

an iterable of setSpec, setName tuples (strings).

writeMetadata(element, metadata)

Create XML elements under the given element, using the provided metadata.

Should avoid doing any model-lookups, as they should be done when creating the metadata.

Parameters
  • element (lxml.etree.Element) – element to put all content under (as SubElements)

  • metadata (oaipmh.common.Metadata) – metadata to turn into XML

Raises

NotImplementedError – not implemented

class tardis.apps.oaipmh.server.ProxyingServer(providers)
getRecord(metadataPrefix, identifier)

Get a record for a metadataPrefix and identifier.

Raises
  • oaipmh.error.CannotDisseminateFormatError – if no provider returns a result, but at least one provider responds with oaipmh.error.CannotDisseminateFormatError (meaning the identifier exists)

  • oaipmh.error.IdDoesNotExistError – if all providers fail with oaipmh.error.IdDoesNotExistError

Returns

first successful provider response

Return type

response

identify()

Retrieve information about the repository.

Returns

an oaipmh.common.Identify object describing the repository.

Return type

oaipmh.common.Identify

listIdentifiers(metadataPrefix, **kwargs)

Lists identifiers from all providers as a single set.

Raises
  • error.CannotDisseminateFormatError – if metadataPrefix is not supported by the repository.

  • error.NoSetHierarchyError – if a set is provided, as the repository does not support sets.

Returns

a set.Set of headers.

Return type

set

listMetadataFormats(**kwargs)

List metadata formats from all providers in a single set.

Raises
  • error.IdDoesNotExistError – if record with identifier does not exist.

  • error.NoMetadataFormatsError – if no formats are available for the indicated record, but it does exist.

Returns

a frozenset of metadataPrefix, schema, metadataNamespace tuples (each entry in the tuple is a string).

Return type

frozenset

listRecords(metadataPrefix, **kwargs)

Lists records from all providers as a single set.

Raises
  • error.CannotDisseminateFormatError – if metadataPrefix is not supported by the repository.

  • error.NoSetHierarchyError – if a set is provided, as the repository does not support sets.

Returns

a set.Set of header, metadata, about tuples.

Return type

set

listSets()

List sets.

Raises

oaipmh.error.NoSetHierarchyError – because set hierarchies are currrently not implemented