示例#1
0
def parse_datacite_dict(doc):
    """
    :param doc: python dict containing datacite conform data to
                be parsed.
    """
    if not doc or "resource" not in doc:
        msg = "Could not find root. "
        msg += "Please escape any XML namespace using the '-n' command line option."
        raise ParserException(msg)

    datacite_root = doc["resource"]
    if "identifier" not in datacite_root:
        raise ParserException("Could not find identifier (DOI) node")

    odml_doc = Document()
    odml_doc.repository = "https://terminologies.g-node.org/v1.1/terminologies.xml"
    odml_doc.date = date.today().isoformat()

    root_sec = Section(name="DataCite", type="data_reference", parent=odml_doc)

    supported_tags = setup_supported_tags()
    for node_tag in datacite_root:
        if node_tag in supported_tags:
            helper = supported_tags[node_tag]
            helper.func(helper, datacite_root[node_tag], root_sec)
        else:
            print("[Warning] Ignoring unsupported root node '%s'" % node_tag)

    return odml_doc
示例#2
0
    def test_date(self):
        datestring = "2000-01-02"
        doc = Document(date=datestring)

        self.assertIsInstance(doc.date, datetime.date)
        self.assertEqual(
            doc.date,
            datetime.datetime.strptime(datestring, FORMAT_DATE).date())

        doc.date = None
        self.assertIsNone(doc.date)

        doc.date = datestring
        self.assertIsInstance(doc.date, datetime.date)
        self.assertEqual(
            doc.date,
            datetime.datetime.strptime(datestring, FORMAT_DATE).date())

        doc.date = []
        self.assertIsNone(doc.date)
        doc.date = {}
        self.assertIsNone(doc.date)
        doc.date = ()
        self.assertIsNone(doc.date)
        doc.date = ""
        self.assertIsNone(doc.date)

        with self.assertRaises(ValueError):
            doc.date = "some format"
示例#3
0
    def test_date(self):
        datestring = "2000-01-02"
        doc = Document(date=datestring)

        self.assertIsInstance(doc.date, datetime.date)
        self.assertEqual(doc.date,
                         datetime.datetime.strptime(datestring, FORMAT_DATE).date())

        doc.date = None
        self.assertIsNone(doc.date)

        doc.date = datestring
        self.assertIsInstance(doc.date, datetime.date)
        self.assertEqual(doc.date,
                         datetime.datetime.strptime(datestring, FORMAT_DATE).date())

        doc.date = []
        self.assertIsNone(doc.date)
        doc.date = {}
        self.assertIsNone(doc.date)
        doc.date = ()
        self.assertIsNone(doc.date)
        doc.date = ""
        self.assertIsNone(doc.date)

        with self.assertRaises(ValueError):
            doc.date = "some format"
    def test_doc(self):
        """
        Test if a document and its attributes get converted correctly from rdf to odml.
        """
        doc = Document()
        doc.author = "D. N. Adams"
        doc.version = 42
        doc.date = datetime.date(1979, 10, 12)

        rdf_writer = RDFWriter(doc).get_rdf_str()
        rdf_reader = RDFReader().from_string(rdf_writer, "turtle")

        self.assertEqual(rdf_reader[0].author, "D. N. Adams")
        self.assertEqual(rdf_reader[0].version, "42")
        self.assertEqual(rdf_reader[0].date, datetime.date(1979, 10, 12))