1616
1717from ted_sws .core .model .metadata import Metadata
1818
19- WORK_AGENT = "PUBL"
19+ METS_PROFILE = "http://publications.europa.eu/resource/mets/op-sip-profile_002"
20+ METS_TYPE_CREATE = "create"
21+ METS_TYPE_UPDATE = "update"
22+ METS_TYPE_DELETE = "delete"
23+ METS_ACCEPTED_TYPES = [METS_TYPE_CREATE , METS_TYPE_UPDATE , METS_TYPE_DELETE ]
24+ METS_DMD_MDTYPE = "OTHER"
25+ METS_DMD_OTHERMDTYPE = "INSTANCE"
26+ METS_DMD_HREF = "{work_identifier}_{revision}.mets.xml.dmd.rdf"
27+ METS_DMD_ID = "{work_identifier}_{revision}_dmd_{dmd_idx}"
28+ METS_TMD_ID = "{work_identifier}_{revision}_tmd_{tmd_idx}"
29+ METS_TMD_HREF = "{work_identifier}_{revision}.tmd.rdf"
30+ METS_TMD_MDTYPE = "OTHER"
31+ METS_TMD_OTHERMDTYPE = "INSTANCE"
32+ METS_FILE_ID = "{work_identifier}_{revision}_file_{file_idx}"
33+ METS_NOTICE_FILE_HREF = "{work_identifier}_{revision}.notice.ttl"
34+ METS_NOTICE_FILE_MIMETYPE = "text/turtle"
35+ METS_NOTICE_FILE_CHECKSUM_TYPE = "SHA-256"
36+
37+ WORK_AGENT = "EURUN"
2038PUBLICATION_FREQUENCY = "OTHER"
2139CONCEPT_TYPE_DATASET = "TEST_DATA"
2240DATASET_KEYWORD = [
3553LANGUAGE = LANGUAGES [0 ]
3654USES_LANGUAGE = "MUL"
3755
38- ACTION_CREATE = "create"
39- ACTION_UPDATE = "update"
40- ACCEPTED_ACTIONS = [ACTION_CREATE , ACTION_UPDATE ]
41-
4256REVISION = "0"
4357
4458
45- def validate_notice_action_type (v ):
46- if v not in ACCEPTED_ACTIONS :
47- raise ValueError ('No such action : %s' % v )
59+ def validate_mets_type (v ):
60+ if v not in METS_ACCEPTED_TYPES :
61+ raise ValueError ('No such METS type : %s' % v )
4862
4963
50- class NoticeActionMetadata (Metadata ):
64+ class NoticeMetadata (Metadata ):
5165 """
52- Notice action metadata
66+ General notice metadata
5367 """
54- type : str = ACTION_CREATE
55- date : str = datetime .datetime .now ().isoformat ()
56-
57- @validator ('type' )
58- def validate_notice_action_type (cls , v ):
59- validate_notice_action_type (v )
60- return v
68+ id : Optional [str ]
69+ number : Optional [str ]
6170
6271
63- class NoticeMetadata (Metadata ):
72+ class MetsMetadata (Metadata ):
6473 """
6574 General notice metadata
6675 """
67- id : Optional [str ] = None
6876 languages : List [str ] = LANGUAGES
69- action : NoticeActionMetadata = NoticeActionMetadata ()
77+ revision : str = REVISION
78+
79+ type : str = METS_TYPE_CREATE
80+ profile : str = METS_PROFILE
81+ createdate : str = datetime .datetime .now ().isoformat ()
82+ document_id : Optional [str ]
83+ dmd_id : Optional [str ]
84+ dmd_mdtype : str = METS_DMD_MDTYPE
85+ dmd_othermdtype : str = METS_DMD_OTHERMDTYPE
86+ dmd_href : Optional [str ]
87+ tmd_id : Optional [str ]
88+ tmd_href : Optional [str ]
89+ tmd_mdtype : str = METS_TMD_MDTYPE
90+ tmd_othermdtype : str = METS_TMD_OTHERMDTYPE
91+ file_id : Optional [str ]
92+ notice_file_href : Optional [str ]
93+ notice_file_mimetype : Optional [str ] = METS_NOTICE_FILE_MIMETYPE
94+ notice_file_checksum : Optional [str ]
95+ notice_file_checksum_type : Optional [str ] = METS_NOTICE_FILE_CHECKSUM_TYPE
96+
97+ @validator ('type' )
98+ def validate_notice_action_type (cls , v ):
99+ validate_mets_type (v )
100+ return v
70101
71102
72103class WorkMetadata (Metadata ):
@@ -95,11 +126,13 @@ class WorkMetadata(Metadata):
95126
96127
97128class ExpressionMetadata (Metadata ):
129+ identifier : Optional [str ]
98130 title : Optional [Dict [str , str ]] = None
99131 uses_language : str = USES_LANGUAGE
100132
101133
102134class ManifestationMetadata (Metadata ):
135+ identifier : Optional [str ]
103136 type : str = MANIFESTATION_TYPE
104137 date_publication : str = datetime .datetime .now ().strftime ('%Y-%m-%d' )
105138 distribution_has_status_distribution_status : str = DISTRIBUTION_STATUS
@@ -108,6 +141,7 @@ class ManifestationMetadata(Metadata):
108141
109142class PackagerMetadata (Metadata ):
110143 notice : NoticeMetadata = NoticeMetadata ()
144+ mets : MetsMetadata = MetsMetadata ()
111145 work : WorkMetadata = WorkMetadata ()
112146 expression : ExpressionMetadata = ExpressionMetadata ()
113147 manifestation : ManifestationMetadata = ManifestationMetadata ()
0 commit comments