1414import datetime
1515
1616from ted_sws .notice_metadata_processor .model .metadata import ExtractedMetadata
17- from ted_sws .notice_packager .model .metadata import PackagerMetadata , ACTION_CREATE , LANGUAGE , REVISION , BASE_WORK , \
18- BASE_TITLE
17+ from ted_sws .notice_packager .model .metadata import PackagerMetadata , METS_TYPE_CREATE , LANGUAGE , REVISION , BASE_WORK , \
18+ BASE_TITLE , METS_DMD_HREF , METS_DMD_ID , METS_TMD_ID , METS_TMD_HREF , METS_FILE_ID , METS_NOTICE_FILE_HREF
1919
2020# This is used in pipeline
2121NORMALIZED_SEPARATOR = '_'
@@ -31,9 +31,12 @@ class MetadataTransformer:
3131 def __init__ (self , notice_metadata : ExtractedMetadata ):
3232 self .notice_metadata = notice_metadata
3333
34- def template_metadata (self , action : str = ACTION_CREATE ) -> PackagerMetadata :
34+ def template_metadata (self , action : str = METS_TYPE_CREATE ) -> PackagerMetadata :
3535 metadata = self .from_notice_metadata (self .notice_metadata )
36- metadata .notice .action .type = action
36+
37+ # here the custom and composed metadata properties are set
38+ metadata .mets .type = action
39+ metadata .mets .document_id = f"{ metadata .work .identifier } _{ action } "
3740 return metadata
3841
3942 @classmethod
@@ -46,16 +49,6 @@ def normalize_value(cls, value: str) -> str:
4649 """
4750 return value .replace (DENORMALIZED_SEPARATOR , NORMALIZED_SEPARATOR )
4851
49- @classmethod
50- def denormalize_value (cls , value : str ) -> str :
51- """
52- The pipeline's separator is replaced with initial (TED API)'s one.
53- This is used when notice goes out to API
54- :param value:
55- :return:
56- """
57- return value .replace (NORMALIZED_SEPARATOR , DENORMALIZED_SEPARATOR )
58-
5952 @classmethod
6053 def from_notice_metadata (cls , notice_metadata : ExtractedMetadata ) -> PackagerMetadata :
6154 _date = datetime .datetime .now ()
@@ -65,6 +58,9 @@ def from_notice_metadata(cls, notice_metadata: ExtractedMetadata) -> PackagerMet
6558
6659 # NOTICE
6760 metadata .notice .id = cls .normalize_value (notice_metadata .notice_publication_number )
61+ metadata .notice .public_number_document = publication_notice_number (metadata .notice .id )
62+ metadata .notice .public_number_edition = publication_notice_year (
63+ notice_metadata ) + notice_metadata .ojs_issue_number .zfill (3 )
6864
6965 # WORK
7066 publication_date = datetime .datetime .strptime (notice_metadata .publication_date , '%Y%m%d' ).strftime ('%Y-%m-%d' )
@@ -81,10 +77,42 @@ def from_notice_metadata(cls, notice_metadata: ExtractedMetadata) -> PackagerMet
8177 metadata .work .procurement_public_url_etendering = notice_metadata .uri_list
8278
8379 # EXPRESSION
84- metadata .expression .title = {LANGUAGE : BASE_TITLE + " " + metadata .notice .id }
80+ metadata .expression .identifier = f"{ metadata .work .identifier } .MUL"
81+ metadata .expression .title = {LANGUAGE : BASE_TITLE + " " + metadata .work .identifier }
8582
8683 # MANIFESTATION
84+ metadata .manifestation .identifier = f"{ metadata .expression .identifier } .rdf"
8785 metadata .manifestation .date_publication = publication_date
86+
87+ # METS
88+ metadata .mets .dmd_href = METS_DMD_HREF .format (
89+ work_identifier = metadata .work .identifier ,
90+ revision = metadata .mets .revision
91+ )
92+ metadata .mets .dmd_id = METS_DMD_ID .format (
93+ work_identifier = metadata .work .identifier ,
94+ revision = metadata .mets .revision ,
95+ dmd_idx = "001"
96+ )
97+ metadata .mets .tmd_id = METS_TMD_ID .format (
98+ work_identifier = metadata .work .identifier ,
99+ revision = metadata .mets .revision ,
100+ tmd_idx = "001"
101+ )
102+ metadata .mets .tmd_href = METS_TMD_HREF .format (
103+ work_identifier = metadata .work .identifier ,
104+ revision = metadata .mets .revision
105+ )
106+ metadata .mets .file_id = METS_FILE_ID .format (
107+ work_identifier = metadata .work .identifier ,
108+ revision = metadata .mets .revision ,
109+ file_idx = "001"
110+ )
111+ metadata .mets .notice_file_href = METS_NOTICE_FILE_HREF .format (
112+ work_identifier = metadata .work .identifier ,
113+ revision = metadata .mets .revision
114+ )
115+
88116 return metadata
89117
90118
@@ -103,4 +131,4 @@ def publication_notice_uri(notice_id, notice_metadata):
103131def publication_work_identifier (notice_id , notice_metadata ):
104132 year = publication_notice_year (notice_metadata )
105133 number = publication_notice_number (notice_id )
106- return f"{ year } _{ notice_metadata .ojs_type } _{ notice_metadata .ojs_issue_number } _{ number } "
134+ return f"{ year } _{ notice_metadata .ojs_type } _{ notice_metadata .ojs_issue_number . zfill ( 3 ) } _{ number } "
0 commit comments