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