Exemplo n.º 1
0
 def __init__(self,
              repositoryName,
              adminEmail,
              repositoryIdentifier=None,
              batchSize=OaiList.DEFAULT_BATCH_SIZE,
              supportXWait=False,
              fixIdentifyBaseURL=False):
     outside = Transparent(
     ) if repositoryIdentifier == None else OaiIdentifierRename(
         repositoryIdentifier)
     self.addObserver = outside.addObserver
     self.addStrand = outside.addStrand
     self._internalObserverTree = be((Observable(), (
         OaiError(),
         (OaiIdentify(repositoryName=repositoryName,
                      adminEmail=adminEmail,
                      repositoryIdentifier=repositoryIdentifier,
                      fixIdentifyBaseURL=fixIdentifyBaseURL), (outside, )),
         (OaiList(batchSize=batchSize,
                  supportXWait=supportXWait), (OaiRecord(), (outside, ))),
         (OaiGetRecord(), (OaiRecord(), (outside, ))),
         (OaiListMetadataFormats(), (outside, )),
         (OaiListSets(), (outside, )),
     )))
Exemplo n.º 2
0
    def testGetRecordDeletedInRequestedPrefix(self):
        oaijazz = OaiJazz(self.tempdir + '/jazz')
        storage = MultiSequentialStorage(self.tempdir + "/seq-store")
        oairecord = OaiRecord()

        class MyStorage(object):
            def getData(self, identifier, name):
                return 'data'

        oaigetrecord = be((OaiGetRecord(repository=OaiRepository()),
                           (oaijazz, ), (oairecord, (MyStorage(), ))))
        oaijazz.addOaiRecord(identifier='id:0', metadataPrefixes=['A', 'B'])
        oaijazz.deleteOaiRecordInPrefixes(identifier='id:0',
                                          metadataPrefixes=['A'])
        response = oaigetrecord.getRecord(arguments=dict(
            verb=['GetRecord'],
            metadataPrefix=['A'],
            identifier=['id:0'],
        ),
                                          **self.httpkwargs)
        _, body = asString(response).split("\r\n\r\n")
        self.assertEqual(
            'deleted',
            xpathFirst(
                XML(body.encode()),
                '/oai:OAI-PMH/oai:GetRecord/oai:record/oai:header/@status'),
            body)

        response = oaigetrecord.getRecord(arguments=dict(
            verb=['GetRecord'],
            metadataPrefix=['B'],
            identifier=['id:0'],
        ),
                                          **self.httpkwargs)
        _, body = asString(response).split("\r\n\r\n")
        self.assertEqual(
            "data", xpathFirst(XML(body.encode()), '//oai:metadata/text()'))

        response = oaigetrecord.getRecord(arguments=dict(
            verb=['GetRecord'],
            metadataPrefix=['C'],
            identifier=['id:0'],
        ),
                                          **self.httpkwargs)
        _, body = asString(response).split("\r\n\r\n")
        self.assertEqual(
            'cannotDisseminateFormat',
            xpathFirst(XML(body.encode()), '/oai:OAI-PMH/oai:error/@code'))
Exemplo n.º 3
0
    def testGetRecordWithMultiSequentialStorage(self):
        oaijazz = OaiJazz(self.tempdir + '/jazz')
        oaijazz.updateMetadataFormat(prefix="oai_dc", schema="", namespace="")
        storage = MultiSequentialStorage(self.tempdir + "/seq-store")
        oairecord = OaiRecord()
        oaigetrecord = be(
            (OaiGetRecord(repository=OaiRepository()), (oaijazz, ),
             (oairecord, (RetrieveToGetDataAdapter(), (storage, )))))

        oaijazz.addOaiRecord(identifier="id0", metadataPrefixes=['oai_dc'])
        storage.addData(identifier="id0", name="oai_dc", data=b"data01")
        response = oaigetrecord.getRecord(arguments=dict(
            verb=['GetRecord'],
            metadataPrefix=['oai_dc'],
            identifier=['id0'],
        ),
                                          **self.httpkwargs)
        _, body = asString(response).split("\r\n\r\n")
        self.assertEqual(
            "data01",
            xpath(parse(BytesIO(body.encode())), '//oai:metadata')[0].text)
Exemplo n.º 4
0
 def setUpOaiRecord(self, **kwargs):
     self.oaiRecord = OaiRecord(**kwargs)
     self.observer = CallTrace('Observer')
     self.oaiRecord.addObserver(self.observer)
     self.observer.returnValues['provenance'] = (f for f in [])
     self.observer.returnValues['getData'] = '<data/>'