django-daiquiri / daiquiri

A framework for the publication of scientific databases
https://escience.aip.de/daiquiri
Apache License 2.0
26 stars 8 forks source link

Fix datacite renderer #117

Closed kimakan closed 1 year ago

kimakan commented 1 year ago

Fixes the datacite renderer in a way that make it compatible with https://schema.datacite.org/meta/kernel-4.4/doc/DataCite-MetadataKernel_v4.4.pdf

Some of the fixes are:

coveralls commented 1 year ago

Pull Request Test Coverage Report for Build 3689087086


Changes Missing Coverage Covered Lines Changed/Added Lines %
daiquiri/metadata/serializers/datacite.py 4 6 66.67%
daiquiri/core/renderers/datacite.py 0 10 0.0%
<!-- Total: 5 17 29.41% -->
Files with Coverage Reduction New Missed Lines %
daiquiri/core/renderers/datacite.py 2 3.13%
<!-- Total: 2 -->
Totals Coverage Status
Change from base Build 3619221320: -0.04%
Covered Lines: 4603
Relevant Lines: 6991

💛 - Coveralls
kimakan commented 1 year ago

The fields creator, contributor and related_identifier are of the type JSONField in the model. Thus, no changes in the metadata model are required. I purposely tried to avoid such consequences. I tested this version on my local instance and everything worked and rendered nicely. Also, these changes does not break anything from the previous metadata versions. The entries that are not defined will simply not rendered/left out.

agy-why commented 1 year ago

I see, and since the licences identifiers are MethodsSerializers they do not require either changes in the model.

agy-why commented 1 year ago

The entries that are not defined will simply not rendered/left out.

Although in this case the entry is defined: {'nameType': name_type}. But maybe you mean that defined entry with None value are not rendered, correct?

kimakan commented 1 year ago

There is one additional change that I would like make. Currently, we provide only the Updated date explicitly. However, the datacite.org seems to use the mandatory PublicationYear we are providing to create the Issued date internally. https://api.datacite.org/application/vnd.datacite.datacite+json/10.17876/gaia/dr.3

      "dates": [
        {
          "date": "2022-06-13",
          "dateType": "Updated"
        },
        {
          "date": "2022",
          "dateType": "Issued"
        }
      ],

This date follows the YYYY format which isn't precise.

I suggest that we provide the Issued date explicitly by using the published field from the metadata. We are already using it to create PublicationYear for the datacite.org but we drop MM-DD due to the requirements for PublicationYear.

agy-why commented 1 year ago

@kimakan :+1:

Issued: published full date YYYY-MM-DD
PublicationYear: published year only YYYY