示例#1
0
    def setUpForProtocol(self, protocol_class, repository):

        self.oaisource, _ = OaiSource.objects.get_or_create(
            identifier='deposit_oaisource',
            name='Repository OAI source',
            default_pubtype='preprint')
        logo = InMemoryUploadedFile(BytesIO(simple_png_image), None,
                                    'logo.png', 'image/png',
                                    len(simple_png_image), None, None)
        self.repo = repository
        self.repo.oaisource = self.oaisource
        self.repo.logo = logo
        if not self.repo.description:
            self.repo.description = 'brsuatiercs'
        if not self.repo.name:
            self.repo.name = 'Test Repository'
        self.repo.protocol = protocol_class.__name__
        self.repo.save()
        protocol_registry.register(protocol_class)
        self.proto = protocol_class(self.repo)
        self.form = None
示例#2
0
    def setUpForProtocol(self, protocol_class, repository):

        self.oaisource, _ = OaiSource.objects.get_or_create(
            identifier='deposit_oaisource',
            name='Repository OAI source',
            default_pubtype='preprint')
        logo = InMemoryUploadedFile(
                BytesIO(simple_png_image),
                None, 'logo.png',
                'image/png', len(simple_png_image), None, None)
        self.repo = repository
        self.repo.oaisource = self.oaisource
        self.repo.logo = logo
        if not self.repo.description:
            self.repo.description = 'brsuatiercs'
        if not self.repo.name:
            self.repo.name = 'Test Repository'
        self.repo.protocol = protocol_class.__name__
        self.repo.save()
        protocol_registry.register(protocol_class)
        self.proto = protocol_class(self.repo)
        self.form = None
示例#3
0
            related_item_issue.set('type', 'issue')
            related_item_issue_number = etree.SubElement(related_item_issue, MODS + 'number')
            related_item_issue_number.text = self.paper_metadata.get('issue')
            part['issue'] = related_item_issue

        # Set volume
        if self.paper_metadata.get('volume'):
            related_item_volume = etree.Element(MODS + 'detail')
            related_item_volume.set('type', 'volume')
            related_item_volume_number = etree.SubElement(related_item_volume, MODS + 'number')
            related_item_volume_number.text = self.paper_metadata.get('volume')
            part['volume'] = related_item_volume

        # Make parts if existing
        if len(part) >= 1:
            related_item_part = etree.Element(MODS + 'part')
            for item in part.values():
                related_item_part.insert(0, item)
            related_item_data['part'] = related_item_part

        # Make relatedItem if existing
        if len(related_item_data) >= 1:
            related_item = etree.Element(MODS + 'relatedItem')
            for item in related_item_data.values():
                related_item.insert(0, item)
        
        return related_item


protocol_registry.register(SWORDMETSMODSProtocol)
示例#4
0
            lambda r: {
                'relation': 'isAlternateIdentifier',
                'identifier': r.splash_url
            }, oairecords)
        for publi in publications:
            if publi.journal and publi.journal.issn:
                idents.append({
                    'relation': 'isPartOf',
                    'identifier': publi.journal.issn
                })

        data = {"metadata": metadata}
        return data


protocol_registry.register(ZenodoProtocol)


def swordDocumentType(paper):
    tr = {
        'journal-article': ('publication', 'article'),
        'proceedings-article': ('publication', 'conferencepaper'),
        'book-chapter': ('publication', 'section'),
        'book': ('publication', 'book'),
        'journal-issue': ('publication', 'book'),
        'proceedings': ('publication', 'book'),
        'reference-entry': ('publication', 'other'),
        'poster': ('poster', ),
        'report': ('publication', 'report'),
        'thesis': ('publication', 'thesis'),
        'dataset': ('dataset', ),
示例#5
0
                    "id": preprint_id,
                    "attributes": {
                        "is_published": "true"
                    }
                }
            }
            self.log("### Make the project public")
            project_pub_req = requests.patch(self.node_url,
                                             data=json.dumps(public_project),
                                             headers=self.headers)

            self.log_request(project_pub_req, 200,
                             _('Unable to make the project public.'))

            self.log("### Make the preprint public")
            preprint_pub_req = requests.patch(self.preprint_node_url,
                                              data=json.dumps(public_preprint),
                                              headers=self.headers)

            self.log_request(preprint_pub_req, 200,
                             _('Unable to make the project public.'))

        deposit_result.identifier = self.project_public_url
        deposit_result.splash_url = self.preprint_public_url
        deposit_result.pdf_url = preprint_public_pdf

        return deposit_result


protocol_registry.register(OSFProtocol)
示例#6
0
                oairecord.about.update_availability()
                oairecord.about.update_index()

    def get_new_status(self, identifier):
        """
        Unconditionnally fetch the new status of a deposit, by ID (e.g.
        hal-0001234)
        """
        deposit_url = '%s%s' % (self.api_url, identifier)
        req = requests.get(deposit_url,
                auth=requests.auth.HTTPBasicAuth(self.username,self.password))
        if req.status_code == 400:
            return 'deleted'
        req.raise_for_status()

        parser = etree.XMLParser(encoding='utf-8')
        receipt = etree.parse(BytesIO(req.text.encode('utf-8')), parser)
        receipt = receipt.getroot()

        hal_status = receipt.find('status').text
        if hal_status == 'accept' or hal_status == 'replace':
            return 'published'
        elif hal_status == 'verify' or hal_status == 'update':
            return 'pending'
        elif hal_status == 'delete':
            return 'refused'


protocol_registry.register(HALProtocol)

示例#7
0
                oairecord.about.update_availability()
                oairecord.about.update_index()

    def get_new_status(self, identifier):
        """
        Unconditionnally fetch the new status of a deposit, by ID (e.g.
        hal-0001234)
        """
        deposit_url = '%s%s' % (self.api_url, identifier)
        req = requests.get(deposit_url,
                           auth=requests.auth.HTTPBasicAuth(
                               self.username, self.password))
        if req.status_code == 400:
            return 'deleted'
        req.raise_for_status()

        parser = etree.XMLParser(encoding='utf-8')
        receipt = etree.parse(BytesIO(req.text.encode('utf-8')), parser)
        receipt = receipt.getroot()

        hal_status = receipt.find('status').text
        if hal_status == 'accept' or hal_status == 'replace':
            return 'published'
        elif hal_status == 'verify' or hal_status == 'update':
            return 'pending'
        elif hal_status == 'delete':
            return 'refused'


protocol_registry.register(HALProtocol)
示例#8
0
 def ready(self):
     from .protocol import ZenodoProtocol
     from deposit.registry import protocol_registry
     protocol_registry.register(ZenodoProtocol)
示例#9
0
                "data": {
                    "id": preprint_id,
                    "attributes": {
                        "is_published": "true"
                    }
                }
            }
            self.log("### Make the project public")
            project_pub_req = requests.patch(self.node_url,
                                             data=json.dumps(public_project),
                                             headers=self.headers)

            self.log_request(project_pub_req, 200,
                             _('Unable to make the project public.'))

            self.log("### Make the preprint public")
            preprint_pub_req = requests.patch(self.preprint_node_url,
                                              data=json.dumps(public_preprint),
                                              headers=self.headers)

            self.log_request(preprint_pub_req, 200,
                             _('Unable to make the project public.'))

        deposit_result.identifier = self.project_public_url
        deposit_result.splash_url = self.preprint_public_url
        deposit_result.pdf_url = preprint_public_pdf

        return deposit_result

protocol_registry.register(OSFProtocol)
示例#10
0
            #        payload=f,col_iri=self.repository.api_key)
            #receipt = conn.create(metadata_entry=entry,col_iri=self.repository.api_key)
            files = {'file': ('metadata.xml', meta)}
            headers = {
                'In-Progress': 'false',
                'Content-Type': 'application/atom+xml; type=entry'
            }
            auth = requests.auth.HTTPBasicAuth(self.repository.username,
                                               self.repository.password)
            r = requests.post(self.repository.api_key,
                              files=files,
                              headers=headers,
                              auth=auth)
            self.log_request(
                r, 201, __('Unable to submit the paper to the collection.'))

            self.log(unicode(r.text))

            deposit_result = DepositResult()
        except requests.exceptions.RequestException as e:
            raise DepositError(unicode(e))
        except sword2.exceptions.HTTPResponseError as e:
            if conn is not None:
                self.log(unicode(conn.history))
            raise DepositError(__('Failed to connect to the SWORD server.'))

        return deposit_result


protocol_registry.register(SwordProtocol)
示例#11
0
        # Related identifiers
        idents = [{
                'relation': 'isAlternateIdentifier',
                'identifier': r.splash_url
            } for r in oairecords]
        for publi in publications:
            if publi.journal and publi.journal.issn:
                idents.append(
                    {'relation': 'isPartOf', 'identifier': publi.journal.issn})

        data = {"metadata": metadata}
        return data


protocol_registry.register(ZenodoProtocol)


def swordDocumentType(paper):
    tr = {
        'journal-article': ('publication', 'article'),
        'proceedings-article': ('publication', 'conferencepaper'),
        'book-chapter': ('publication', 'section'),
        'book': ('publication', 'book'),
        'journal-issue': ('publication', 'book'),
        'proceedings': ('publication', 'book'),
        'reference-entry': ('publication', 'other'),
        'poster': ('poster',),
        'report': ('publication', 'report'),
        'thesis': ('publication', 'thesis'),
        'dataset': ('dataset',),