Skip to content

Commit e45fb57

Browse files
committed
review changes
1 parent 504c338 commit e45fb57

11 files changed

Lines changed: 49 additions & 16865 deletions

File tree

ted_sws/core/model/metadata.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
# Email: costezki.eugen@gmail.com
77

88
""" """
9+
from enum import Enum
910
from typing import List, Optional
1011

1112
from pydantic import Field
@@ -55,6 +56,17 @@ class EncodedValue(NamedTuple):
5556
value: str = None
5657

5758

59+
class NoticeSource(str, Enum):
60+
"""
61+
Holds source of notice
62+
"""
63+
STANDARD_FORM = "standard_forms"
64+
ELECTRONIC_FORM = "eforms"
65+
66+
def __str__(self):
67+
return self.value
68+
69+
5870
class NormalisedMetadata(Metadata):
5971
"""
6072
Stores notice normalised metadata
@@ -81,7 +93,7 @@ class NormalisedMetadata(Metadata):
8193
eforms_subtype: str
8294
xsd_version: Optional[str]
8395
published_in_cellar_counter: int = Field(default=0)
84-
is_eform: Optional[bool] = False
96+
notice_source: Optional[NoticeSource] = NoticeSource.STANDARD_FORM
8597
eform_sdk_version: Optional[str]
8698

8799

@@ -106,8 +118,10 @@ class NormalisedMetadataView(Metadata):
106118
legal_basis_directive: str
107119
form_number: str
108120
eforms_subtype: str
109-
xsd_version: str
121+
xsd_version: Optional[str]
110122
published_in_cellar_counter: int = Field(default=0)
123+
notice_source: Optional[NoticeSource] = NoticeSource.STANDARD_FORM
124+
eform_sdk_version: Optional[str]
111125

112126

113127

ted_sws/notice_metadata_processor/adapters/notice_metadata_normaliser.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import re
55
import pandas as pd
66

7-
from ted_sws.core.model.metadata import NormalisedMetadata, LanguageTaggedString
7+
from ted_sws.core.model.metadata import NormalisedMetadata, LanguageTaggedString, NoticeSource
88
from ted_sws.notice_metadata_processor.model.metadata import ExtractedMetadata
99
from ted_sws.notice_metadata_processor.services.metadata_constraints import filter_df_by_variables
1010
from ted_sws.resources.mapping_files_registry import MappingFilesRegistry
@@ -37,7 +37,7 @@
3737
NOTICE_TYPE_KEY = "notice_type"
3838
XSD_VERSION_KEY = "xsd_version"
3939
EFORM_SDK_VERSION_KEY = "eform_sdk_version"
40-
IS_EFORM_KEY = "is_eform"
40+
NOTICE_SOURCE_KEY = "notice_source"
4141
ENGLISH_LANGUAGE_TAG = "EN"
4242
mapping_registry = MappingFilesRegistry()
4343

@@ -258,7 +258,7 @@ def normalise_metadata(self, extracted_metadata: ExtractedMetadata) -> Normalise
258258
LEGAL_BASIS_DIRECTIVE_KEY: get_map_value(mapping=legal_basis_map, value=legal_basis),
259259
E_FORMS_SUBTYPE_KEY: str(eforms_subtype),
260260
XSD_VERSION_KEY: extracted_metadata.xml_schema_version,
261-
IS_EFORM_KEY: False
261+
NOTICE_SOURCE_KEY: NoticeSource.STANDARD_FORM
262262
}
263263

264264
return NormalisedMetadata(**metadata)
@@ -341,7 +341,7 @@ def normalise_metadata(self, extracted_metadata: ExtractedMetadata) -> Normalise
341341
value=legal_basis),
342342
E_FORMS_SUBTYPE_KEY: extracted_metadata.extracted_notice_subtype,
343343
EFORM_SDK_VERSION_KEY: extracted_metadata.xml_schema_version,
344-
IS_EFORM_KEY: True
344+
NOTICE_SOURCE_KEY: NoticeSource.ELECTRONIC_FORM
345345
}
346346

347347
return NormalisedMetadata(**metadata)

ted_sws/notice_metadata_processor/services/notice_eligibility.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import semantic_version
55

6-
from ted_sws.core.model.metadata import NormalisedMetadata
6+
from ted_sws.core.model.metadata import NormalisedMetadata, NoticeSource
77
from ted_sws.core.model.notice import Notice
88
from ted_sws.core.model.transform import MappingSuite
99
from ted_sws.data_manager.adapters.repository_abc import MappingSuiteRepositoryABC, NoticeRepositoryABC
@@ -48,8 +48,10 @@ def check_package(mapping_suite: MappingSuite, notice_metadata: NormalisedMetada
4848
eform_subtype = notice_metadata.eforms_subtype
4949
notice_publication_date = datetime.datetime.fromisoformat(notice_metadata.publication_date)
5050

51-
if notice_metadata.is_eform:
51+
if notice_metadata.notice_source == NoticeSource.ELECTRONIC_FORM:
5252
notice_xsd_version = notice_metadata.eform_sdk_version
53+
# eform sdk version value in metadata example: eforms-sdk-1.7 or eforms-sdk-1.7.9
54+
# we need to extract only the version i.e 1.7 or 1.7.9
5355
eforms_sdk_version = notice_xsd_version.rsplit('-', 1)[1]
5456
constraint_version_range = [format_version_with_zero_patch(version) for version in
5557
constraints[EFORMS_SDK_VERSIONS_KEY]]
@@ -67,7 +69,7 @@ def check_package(mapping_suite: MappingSuite, notice_metadata: NormalisedMetada
6769
constraints[E_FORMS_SUBTYPE_KEY]]
6870
covered_eform_type = eform_subtype in eform_subtype_constraint_values
6971

70-
return True if in_date_range and in_version_range and covered_eform_type else False
72+
return in_date_range and in_version_range and covered_eform_type
7173

7274

7375
def notice_eligibility_checker(notice: Notice, mapping_suite_repository: MappingSuiteRepositoryABC) -> Tuple:

tests/conftest.py

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
NOTICE_NUMBER_KEY, PUBLICATION_DATE_KEY, OJS_NUMBER_KEY, OJS_TYPE_KEY, BUYER_CITY_KEY, BUYER_NAME_KEY, LANGUAGE_KEY, \
1919
BUYER_COUNTRY_KEY, EU_INSTITUTION_KEY, SENT_DATE_KEY, DEADLINE_DATE_KEY, NOTICE_TYPE_KEY, FORM_TYPE_KEY, \
2020
PLACE_OF_PERFORMANCE_KEY, EXTRACTED_LEGAL_BASIS_KEY, FORM_NUMBER_KEY, LEGAL_BASIS_DIRECTIVE_KEY, \
21-
E_FORMS_SUBTYPE_KEY, XSD_VERSION_KEY
21+
E_FORMS_SUBTYPE_KEY, XSD_VERSION_KEY, EFORM_SDK_VERSION_KEY, NOTICE_SOURCE_KEY
2222

2323
from tests import TEST_DATA_PATH
2424
from tests.fakes.fake_repository import FakeNoticeRepository
@@ -215,30 +215,29 @@ def normalised_metadata_object():
215215
@pytest.fixture
216216
def eform_normalised_metadata_object():
217217
data = {
218-
"title": [LanguageTaggedString(text="Eteläisen Salon liikuntapaikkojen hoidon hankinta", language="FIN")],
219-
"long_title": [
218+
TITLE_KEY: [LanguageTaggedString(text="Eteläisen Salon liikuntapaikkojen hoidon hankinta", language="FIN")],
219+
LONG_TITLE_KEY: [
220220
LanguageTaggedString(text="FIN :: Eteläisen Salon liikuntapaikkojen hoidon hankinta", language="FIN")],
221-
"notice_publication_number": "00622690-2023",
222-
"publication_date": "2023-10-13T00:00:00",
223-
"ojs_issue_number": "198/2023",
224-
"ojs_type": "S",
225-
"city_of_buyer": None,
226-
"name_of_buyer": None,
227-
"original_language": None,
228-
"country_of_buyer": None,
229-
"eu_institution": None,
230-
"document_sent_date": "2023-10-12T00:00:00",
231-
"deadline_for_submission": None,
232-
"notice_type": "http://publications.europa.eu/resource/authority/notice-type/cn-standard",
233-
"form_type": "http://publications.europa.eu/resource/authority/form-type/competition",
234-
"place_of_performance": ["http://data.europa.eu/nuts/code/FI1C1"],
235-
"extracted_legal_basis_directive": "http://publications.europa.eu/resource/authority/legal-basis/32014L0024",
236-
"legal_basis_directive": "http://publications.europa.eu/resource/authority/legal-basis/32014L0024",
237-
"form_number": "",
238-
"eforms_subtype": "16",
239-
"eform_sdk_version": "eforms-sdk-1.7",
240-
"published_in_cellar_counter": 0,
241-
"is_eform": True
221+
NOTICE_NUMBER_KEY: "00622690-2023",
222+
PUBLICATION_DATE_KEY: "2023-10-13T00:00:00",
223+
OJS_NUMBER_KEY: "198/2023",
224+
OJS_TYPE_KEY: "S",
225+
BUYER_CITY_KEY: None,
226+
BUYER_NAME_KEY: None,
227+
LANGUAGE_KEY: None,
228+
BUYER_COUNTRY_KEY: None,
229+
EU_INSTITUTION_KEY: None,
230+
SENT_DATE_KEY: "2023-10-12T00:00:00",
231+
DEADLINE_DATE_KEY: None,
232+
NOTICE_TYPE_KEY: "http://publications.europa.eu/resource/authority/notice-type/cn-standard",
233+
FORM_TYPE_KEY: "http://publications.europa.eu/resource/authority/form-type/competition",
234+
PLACE_OF_PERFORMANCE_KEY: ["http://data.europa.eu/nuts/code/FI1C1"],
235+
EXTRACTED_LEGAL_BASIS_KEY: "http://publications.europa.eu/resource/authority/legal-basis/32014L0024",
236+
LEGAL_BASIS_DIRECTIVE_KEY: "http://publications.europa.eu/resource/authority/legal-basis/32014L0024",
237+
FORM_NUMBER_KEY: "",
238+
E_FORMS_SUBTYPE_KEY: "16",
239+
EFORM_SDK_VERSION_KEY: "eforms-sdk-1.7",
240+
NOTICE_SOURCE_KEY: "eforms"
242241
}
243242

244243
return NormalisedMetadata(**data)

tests/test_data/notice_transformer/test_repository/test_package4/output/cn_sample_2022_10/2024-OJS015-043489/reports/shacl_validation_report.csv

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)