|
9 | 9 | """Crossref Serializers for Invenio RDM Records.""" |
10 | 10 |
|
11 | 11 | from commonmeta import ( |
12 | | - MARSHMALLOW_MAP, |
13 | 12 | CrossrefError, |
14 | 13 | CrossrefXMLSchema, |
15 | 14 | Metadata, |
16 | | - convert_crossref_xml, |
17 | | - unparse_xml, |
| 15 | + write_crossref_xml, |
18 | 16 | ) |
19 | 17 | from flask import current_app |
20 | 18 | from flask_resources import BaseListSchema, MarshmallowSerializer |
@@ -52,26 +50,7 @@ def dump_obj(self, record): |
52 | 50 | email=current_app.config.get("CROSSREF_EMAIL"), |
53 | 51 | registrant=current_app.config.get("CROSSREF_REGISTRANT"), |
54 | 52 | ) |
55 | | - data = convert_crossref_xml(metadata) |
56 | | - |
57 | | - # Use the marshmallow schema to dump the data |
58 | | - schema = CrossrefXMLSchema() |
59 | | - crossref_xml = schema.dump(data) |
60 | | - |
61 | | - # Ensure consistent field ordering through the defined mapping |
62 | | - field_order = [MARSHMALLOW_MAP.get(k, k) for k in list(data.keys())] |
63 | | - crossref_xml = { |
64 | | - k: crossref_xml[k] for k in field_order if k in crossref_xml |
65 | | - } |
66 | | - |
67 | | - head = { |
68 | | - "depositor": metadata.depositor, |
69 | | - "email": metadata.email, |
70 | | - "registrant": metadata.registrant, |
71 | | - } |
72 | | - |
73 | | - # Convert the dict to Crossref XML |
74 | | - return unparse_xml(crossref_xml, dialect="crossref", head=head) |
| 53 | + return write_crossref_xml(metadata) |
75 | 54 | except (ValueError, CrossrefError) as e: |
76 | 55 | current_app.logger.error( |
77 | 56 | f"CrossrefError while converting metadata to Crossref XML: {metadata.id} - {str(e)}" |
|
0 commit comments