diff --git a/ted_sws/notice_packager/adapters/template_generator.py b/ted_sws/notice_packager/adapters/template_generator.py index c793b4780..9053f11f0 100644 --- a/ted_sws/notice_packager/adapters/template_generator.py +++ b/ted_sws/notice_packager/adapters/template_generator.py @@ -11,7 +11,7 @@ from jinja2 import Environment, PackageLoader -from ted_sws.notice_packager.model.metadata import PackagerMetadata, validate_notice_action_type +from ted_sws.notice_packager.model.metadata import PackagerMetadata, validate_mets_type TEMPLATES = Environment(loader=PackageLoader("ted_sws.notice_packager.resources", "templates")) @@ -34,8 +34,8 @@ def tmd_rdf_generator(cls, data: PackagerMetadata = None) -> str: @classmethod def mets2action_mets_xml_generator(cls, data: PackagerMetadata = None) -> str: - action = data.notice.action.type - validate_notice_action_type(action) + action = data.mets.type + validate_mets_type(action) template = 'mets2action_mets_xml.jinja2' return cls.__generate_template(template, data) diff --git a/ted_sws/notice_packager/model/metadata.py b/ted_sws/notice_packager/model/metadata.py index 79bde874b..f9a26a828 100644 --- a/ted_sws/notice_packager/model/metadata.py +++ b/ted_sws/notice_packager/model/metadata.py @@ -16,7 +16,25 @@ from ted_sws.core.model.metadata import Metadata -WORK_AGENT = "PUBL" +METS_PROFILE = "http://publications.europa.eu/resource/mets/op-sip-profile_002" +METS_TYPE_CREATE = "create" +METS_TYPE_UPDATE = "update" +METS_TYPE_DELETE = "delete" +METS_ACCEPTED_TYPES = [METS_TYPE_CREATE, METS_TYPE_UPDATE, METS_TYPE_DELETE] +METS_DMD_MDTYPE = "OTHER" +METS_DMD_OTHERMDTYPE = "INSTANCE" +METS_DMD_HREF = "{work_identifier}_{revision}.mets.xml.dmd.rdf" +METS_DMD_ID = "dmd_{work_identifier}_{revision}_{dmd_idx}" +METS_TMD_ID = "tmd_{work_identifier}_{revision}_{tmd_idx}" +METS_TMD_HREF = "{work_identifier}_{revision}.tmd.rdf" +METS_TMD_MDTYPE = "OTHER" +METS_TMD_OTHERMDTYPE = "INSTANCE" +METS_FILE_ID = "file_{work_identifier}_{revision}_{file_idx}" +METS_NOTICE_FILE_HREF = "{work_identifier}_{revision}.notice.rdf" +METS_NOTICE_FILE_MIMETYPE = "application/rdf+xml" +METS_NOTICE_FILE_CHECKSUM_TYPE = "SHA-256" + +WORK_AGENT = "EURUN" PUBLICATION_FREQUENCY = "OTHER" CONCEPT_TYPE_DATASET = "TEST_DATA" DATASET_KEYWORD = [ @@ -35,38 +53,52 @@ LANGUAGE = LANGUAGES[0] USES_LANGUAGE = "MUL" -ACTION_CREATE = "create" -ACTION_UPDATE = "update" -ACCEPTED_ACTIONS = [ACTION_CREATE, ACTION_UPDATE] - REVISION = "0" -def validate_notice_action_type(v): - if v not in ACCEPTED_ACTIONS: - raise ValueError('No such action: %s' % v) +def validate_mets_type(mets_type): + if mets_type not in METS_ACCEPTED_TYPES: + raise ValueError('No such METS type: %s' % mets_type) -class NoticeActionMetadata(Metadata): +class NoticeMetadata(Metadata): """ - Notice action metadata + General notice metadata """ - type: str = ACTION_CREATE - date: str = datetime.datetime.now().isoformat() - - @validator('type') - def validate_notice_action_type(cls, v): - validate_notice_action_type(v) - return v + id: Optional[str] + public_number_document: Optional[str] + public_number_edition: Optional[str] -class NoticeMetadata(Metadata): +class MetsMetadata(Metadata): """ General notice metadata """ - id: Optional[str] = None languages: List[str] = LANGUAGES - action: NoticeActionMetadata = NoticeActionMetadata() + revision: str = REVISION + + type: str = METS_TYPE_CREATE + profile: str = METS_PROFILE + createdate: str = datetime.datetime.now().isoformat() + document_id: Optional[str] + dmd_id: Optional[str] + dmd_mdtype: str = METS_DMD_MDTYPE + dmd_othermdtype: str = METS_DMD_OTHERMDTYPE + dmd_href: Optional[str] + tmd_id: Optional[str] + tmd_href: Optional[str] + tmd_mdtype: str = METS_TMD_MDTYPE + tmd_othermdtype: str = METS_TMD_OTHERMDTYPE + file_id: Optional[str] + notice_file_href: Optional[str] + notice_file_mimetype: Optional[str] = METS_NOTICE_FILE_MIMETYPE + notice_file_checksum: Optional[str] + notice_file_checksum_type: Optional[str] = METS_NOTICE_FILE_CHECKSUM_TYPE + + @validator('type') + def validate_notice_action_type(cls, action_type): + validate_mets_type(action_type) + return action_type class WorkMetadata(Metadata): @@ -95,11 +127,13 @@ class WorkMetadata(Metadata): class ExpressionMetadata(Metadata): + identifier: Optional[str] title: Optional[Dict[str, str]] = None uses_language: str = USES_LANGUAGE class ManifestationMetadata(Metadata): + identifier: Optional[str] type: str = MANIFESTATION_TYPE date_publication: str = datetime.datetime.now().strftime('%Y-%m-%d') distribution_has_status_distribution_status: str = DISTRIBUTION_STATUS @@ -108,6 +142,7 @@ class ManifestationMetadata(Metadata): class PackagerMetadata(Metadata): notice: NoticeMetadata = NoticeMetadata() + mets: MetsMetadata = MetsMetadata() work: WorkMetadata = WorkMetadata() expression: ExpressionMetadata = ExpressionMetadata() manifestation: ManifestationMetadata = ManifestationMetadata() diff --git a/ted_sws/notice_packager/resources/templates/mets2action_mets_xml.jinja2 b/ted_sws/notice_packager/resources/templates/mets2action_mets_xml.jinja2 index 01729d42a..29bd4be89 100644 --- a/ted_sws/notice_packager/resources/templates/mets2action_mets_xml.jinja2 +++ b/ted_sws/notice_packager/resources/templates/mets2action_mets_xml.jinja2 @@ -2,38 +2,38 @@ - - {{ work.identifier }}_{{ notice.action.type }} + xsi:schemaLocation="http://www.loc.gov/METS/cellar-mets.xsd" + TYPE="{{ mets.type }}" + PROFILE="{{ mets.profile }}"> + + {{ mets.document_id }} - - + + - - + + - - + + - -
-
-
- + +
+
+
+
- + diff --git a/ted_sws/notice_packager/resources/templates/mets_xml_dmd_rdf.jinja2 b/ted_sws/notice_packager/resources/templates/mets_xml_dmd_rdf.jinja2 index ffa383414..a716b18d3 100644 --- a/ted_sws/notice_packager/resources/templates/mets_xml_dmd_rdf.jinja2 +++ b/ted_sws/notice_packager/resources/templates/mets_xml_dmd_rdf.jinja2 @@ -11,14 +11,17 @@ - + {# #} + ted:{{ work.identifier }} {{ work.do_not_index }} {{ work.date_document }} - {% for lang in notice.languages %} + {{ notice.public_number_edition }} + {% for lang in mets.languages %} {{ work.title[lang] }} {% endfor %} + {{ notice.public_number_document }} {{ work.datetime_transmission }} {# {{ work.procurement_public_issued_by_country }} {% for uri in work.procurement_public_url_etendering %} @@ -36,16 +39,16 @@ #} - + - {% for lang in notice.languages %} + {% for lang in mets.languages %} {{ expression.title[lang] }} {% endfor %} - - + + {{ manifestation.type }} {{ manifestation.date_publication }} {# diff --git a/ted_sws/notice_packager/resources/templates/tmd_rdf.jinja2 b/ted_sws/notice_packager/resources/templates/tmd_rdf.jinja2 index 896c78fe3..c7f1bfe8a 100644 --- a/ted_sws/notice_packager/resources/templates/tmd_rdf.jinja2 +++ b/ted_sws/notice_packager/resources/templates/tmd_rdf.jinja2 @@ -5,8 +5,8 @@ %cellarEntities; ]> - - {{ notice.id }}.rdf + + {{ mets.notice_file_href }} @@ -16,7 +16,7 @@ - {{ work.title[notice.languages[0]] }} + {{ work.title[mets.languages[0]] }} 1 diff --git a/ted_sws/notice_packager/services/metadata_transformer.py b/ted_sws/notice_packager/services/metadata_transformer.py index a67be8715..0fae5e86c 100644 --- a/ted_sws/notice_packager/services/metadata_transformer.py +++ b/ted_sws/notice_packager/services/metadata_transformer.py @@ -14,8 +14,8 @@ import datetime from ted_sws.notice_metadata_processor.model.metadata import ExtractedMetadata -from ted_sws.notice_packager.model.metadata import PackagerMetadata, ACTION_CREATE, LANGUAGE, REVISION, BASE_WORK, \ - BASE_TITLE +from ted_sws.notice_packager.model.metadata import PackagerMetadata, METS_TYPE_CREATE, LANGUAGE, REVISION, BASE_WORK, \ + BASE_TITLE, METS_DMD_HREF, METS_DMD_ID, METS_TMD_ID, METS_TMD_HREF, METS_FILE_ID, METS_NOTICE_FILE_HREF # This is used in pipeline NORMALIZED_SEPARATOR = '_' @@ -31,9 +31,12 @@ class MetadataTransformer: def __init__(self, notice_metadata: ExtractedMetadata): self.notice_metadata = notice_metadata - def template_metadata(self, action: str = ACTION_CREATE) -> PackagerMetadata: + def template_metadata(self, action: str = METS_TYPE_CREATE) -> PackagerMetadata: metadata = self.from_notice_metadata(self.notice_metadata) - metadata.notice.action.type = action + + # here the custom and composed metadata properties are set + metadata.mets.type = action + metadata.mets.document_id = f"{metadata.work.identifier}_{action}" return metadata @classmethod @@ -46,16 +49,6 @@ def normalize_value(cls, value: str) -> str: """ return value.replace(DENORMALIZED_SEPARATOR, NORMALIZED_SEPARATOR) - @classmethod - def denormalize_value(cls, value: str) -> str: - """ - The pipeline's separator is replaced with initial (TED API)'s one. - This is used when notice goes out to API - :param value: - :return: - """ - return value.replace(NORMALIZED_SEPARATOR, DENORMALIZED_SEPARATOR) - @classmethod def from_notice_metadata(cls, notice_metadata: ExtractedMetadata) -> PackagerMetadata: _date = datetime.datetime.now() @@ -65,6 +58,9 @@ def from_notice_metadata(cls, notice_metadata: ExtractedMetadata) -> PackagerMet # NOTICE metadata.notice.id = cls.normalize_value(notice_metadata.notice_publication_number) + metadata.notice.public_number_document = publication_notice_number(metadata.notice.id) + metadata.notice.public_number_edition = publication_notice_year( + notice_metadata) + notice_metadata.ojs_issue_number.zfill(3) # WORK 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 metadata.work.procurement_public_url_etendering = notice_metadata.uri_list # EXPRESSION - metadata.expression.title = {LANGUAGE: BASE_TITLE + " " + metadata.notice.id} + metadata.expression.identifier = f"{metadata.work.identifier}.MUL" + metadata.expression.title = {LANGUAGE: BASE_TITLE + " " + metadata.work.identifier} # MANIFESTATION + metadata.manifestation.identifier = f"{metadata.expression.identifier}.rdf" metadata.manifestation.date_publication = publication_date + + # METS + metadata.mets.dmd_href = METS_DMD_HREF.format( + work_identifier=metadata.work.identifier, + revision=metadata.mets.revision + ) + metadata.mets.dmd_id = METS_DMD_ID.format( + work_identifier=metadata.work.identifier, + revision=metadata.mets.revision, + dmd_idx="001" + ) + metadata.mets.tmd_id = METS_TMD_ID.format( + work_identifier=metadata.work.identifier, + revision=metadata.mets.revision, + tmd_idx="001" + ) + metadata.mets.tmd_href = METS_TMD_HREF.format( + work_identifier=metadata.work.identifier, + revision=metadata.mets.revision + ) + metadata.mets.file_id = METS_FILE_ID.format( + work_identifier=metadata.work.identifier, + revision=metadata.mets.revision, + file_idx="001" + ) + metadata.mets.notice_file_href = METS_NOTICE_FILE_HREF.format( + work_identifier=metadata.work.identifier, + revision=metadata.mets.revision + ) + return metadata @@ -103,4 +131,4 @@ def publication_notice_uri(notice_id, notice_metadata): def publication_work_identifier(notice_id, notice_metadata): year = publication_notice_year(notice_metadata) number = publication_notice_number(notice_id) - return f"{year}_{notice_metadata.ojs_type}_{notice_metadata.ojs_issue_number}_{number}" + return f"{year}_{notice_metadata.ojs_type}_{notice_metadata.ojs_issue_number.zfill(3)}_{number}" diff --git a/ted_sws/notice_packager/services/notice_packager.py b/ted_sws/notice_packager/services/notice_packager.py index 967dfd393..939563d69 100644 --- a/ted_sws/notice_packager/services/notice_packager.py +++ b/ted_sws/notice_packager/services/notice_packager.py @@ -11,37 +11,39 @@ import base64 import binascii +import hashlib import pathlib from pathlib import Path from tempfile import TemporaryDirectory from typing import List +import rdflib +from rdflib.parser import StringInputSource + from ted_sws.core.model.manifestation import METSManifestation from ted_sws.core.model.notice import Notice from ted_sws.notice_metadata_processor.model.metadata import ExtractedMetadata from ted_sws.notice_metadata_processor.services.xml_manifestation_metadata_extractor import \ XMLManifestationMetadataExtractor +from ted_sws.notice_packager import DEFAULT_NOTICE_PACKAGE_EXTENSION from ted_sws.notice_packager.adapters.archiver import ZipArchiver from ted_sws.notice_packager.adapters.template_generator import TemplateGenerator -from ted_sws.notice_packager.model.metadata import ACTION_CREATE +from ted_sws.notice_packager.model.metadata import METS_TYPE_CREATE from ted_sws.notice_packager.services.metadata_transformer import MetadataTransformer -from ted_sws.notice_packager import DEFAULT_NOTICE_PACKAGE_EXTENSION ARCHIVE_NAME_FORMAT = "{work_identifier}_{action}" + DEFAULT_NOTICE_PACKAGE_EXTENSION -FILE_METS_XML_FORMAT = "{notice_id}-0.mets.xml.dmd.rdf" FILE_METS_ACTION_FORMAT = "{work_identifier}_{action}.mets.xml" -FILE_TMD_FORMAT = "techMDID001.tmd.rdf" -FILE_RDF_FORMAT = "{notice_id}.ttl" +DEFAULT_RDF_FILE_FORMAT = "turtle" -def package_notice(notice: Notice) -> Notice: +def package_notice(notice: Notice, action: str = METS_TYPE_CREATE) -> Notice: """ This function generate METSPackage and set Notice METSManifestation. """ - notice_packager = NoticePackager(notice, ACTION_CREATE) + notice_packager = NoticePackager(notice, action) notice_packager.add_template_files() - notice_packager.add_rdf_content(notice.distilled_rdf_manifestation.object_data.encode("utf-8")) + notice_packager.add_rdf_content() mets_manifestation_content = notice_packager.pack() notice.set_mets_manifestation(mets_manifestation=METSManifestation(object_data=mets_manifestation_content)) return notice @@ -60,15 +62,21 @@ def __init__(self, notice: Notice, action: str): metadata_transformer = MetadataTransformer(notice_metadata) self.template_metadata = metadata_transformer.template_metadata(action=action) self.notice_id = self.template_metadata.notice.id - self.notice_action = self.template_metadata.notice.action.type + self.action = self.template_metadata.mets.type self.files: List[pathlib.Path] = [] + self.rdf_content = self.get_rdf_content_from_notice(notice) + if self.rdf_content is not None: + rdf_hash = hashlib.sha256() + rdf_hash.update(self.rdf_content) + self.template_metadata.mets.notice_file_checksum = rdf_hash.hexdigest() + def add_template_files(self): - file_mets_xml_dmd_rdf = self.tmp_dir_path / FILE_METS_XML_FORMAT.format(notice_id=self.notice_id) - file_tmd_rdf = self.tmp_dir_path / FILE_TMD_FORMAT.format() + file_mets_xml_dmd_rdf = self.tmp_dir_path / self.template_metadata.mets.dmd_href + file_tmd_rdf = self.tmp_dir_path / self.template_metadata.mets.tmd_href file_mets2action_mets_xml = self.tmp_dir_path / FILE_METS_ACTION_FORMAT.format( work_identifier=self.template_metadata.work.identifier, - action=self.notice_action + action=self.action ) encoding_type = "utf-8" file_mets_xml_dmd_rdf.write_text(TemplateGenerator.mets_xml_dmd_rdf_generator(self.template_metadata), @@ -83,34 +91,39 @@ def add_template_files(self): file_mets2action_mets_xml ] - def add_rdf_content(self, rdf_content: bytes): - """ - - :param rdf_content: - :return: - """ + @staticmethod + def get_rdf_content_from_notice(notice: Notice) -> bytes: + rdf_content_bytes = None + encoding = "utf-8" + rdf_content = notice.distilled_rdf_manifestation.object_data.encode(encoding) if rdf_content is not None: try: rdf_content_bytes = base64.b64decode(rdf_content, validate=True) except binascii.Error: rdf_content_bytes = rdf_content - rdf_file_path = self.tmp_dir_path / FILE_RDF_FORMAT.format(notice_id=self.notice_id) - rdf_file_path.write_bytes(rdf_content_bytes) - self.files.append(rdf_file_path) - def add_extra_files(self, extra_files: List[pathlib.Path]): + # transform n3 (turtle) to RDF/XML + g = rdflib.Graph() + g.parse(StringInputSource(rdf_content_bytes, encoding=encoding), format=DEFAULT_RDF_FILE_FORMAT) + rdf_content_bytes = g.serialize(format='pretty-xml', encoding=encoding) + + return rdf_content_bytes + + def add_rdf_content(self): """ - :param extra_files: + :param rdf_content: :return: """ - if extra_files is not None: - self.files += extra_files + if self.rdf_content is not None: + rdf_file_path = self.tmp_dir_path / self.template_metadata.mets.notice_file_href + rdf_file_path.write_bytes(self.rdf_content) + self.files.append(rdf_file_path) def get_archive_name(self) -> str: archive_name = ARCHIVE_NAME_FORMAT.format( work_identifier=self.template_metadata.work.identifier, - action=self.template_metadata.notice.action.type + action=self.template_metadata.mets.type ) return archive_name diff --git a/tests/features/notice_packager/conftest.py b/tests/features/notice_packager/conftest.py index 82dc81f1f..309d705fe 100644 --- a/tests/features/notice_packager/conftest.py +++ b/tests/features/notice_packager/conftest.py @@ -1,10 +1,14 @@ import pytest +from ted_sws.core.model.manifestation import RDFManifestation from ted_sws.core.model.notice import NoticeStatus, Notice +from tests import TEST_DATA_PATH @pytest.fixture(scope="function") def package_eligible_notice(publicly_available_notice) -> Notice: notice = publicly_available_notice + notice._distilled_rdf_manifestation.object_data = ( + TEST_DATA_PATH / "notice_packager" / "templates" / "2021_S_004_003545_0.notice.rdf").read_text() notice.update_status_to(NoticeStatus.ELIGIBLE_FOR_PACKAGING) return notice diff --git a/tests/test_data/notice_packager/packages/.gitignore b/tests/test_data/notice_packager/packages/.gitignore deleted file mode 100644 index f59ec20aa..000000000 --- a/tests/test_data/notice_packager/packages/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* \ No newline at end of file diff --git a/tests/test_data/notice_packager/template_metadata.json b/tests/test_data/notice_packager/template_metadata.json index 14510392c..fb7098b71 100644 --- a/tests/test_data/notice_packager/template_metadata.json +++ b/tests/test_data/notice_packager/template_metadata.json @@ -1,41 +1,67 @@ { "notice": { - "id": "196390_2016", - "languages": ["en"], - "action": { - "type": "create", - "date": "2017-05-30T17:23:11.922+02:00" - } + "id": "003545_2021", + "public_number_document": "003545", + "public_number_edition": "2021004" + }, + "mets": { + "languages": [ + "en" + ], + "revision": "0", + "type": "create", + "profile": "http://publications.europa.eu/resource/mets/op-sip-profile_002", + "createdate": "2023-02-17T14:32:17.452160", + "document_id": "", + "dmd_id": "dmd_2021_S_004_003545_0_001", + "dmd_mdtype": "OTHER", + "dmd_othermdtype": "INSTANCE", + "dmd_href": "2021_S_004_003545_0.mets.xml.dmd.rdf", + "tmd_id": "tmd_2021_S_004_003545_0_001", + "tmd_href": "2021_S_004_003545_0.tmd.rdf", + "tmd_mdtype": "OTHER", + "tmd_othermdtype": "INSTANCE", + "file_id": "file_2021_S_004_003545_0_001", + "notice_file_href": "2021_S_004_003545_0.notice.rdf", + "notice_file_mimetype": "application/rdf+xml", + "notice_file_checksum": "00e2c0570f2d9f00c71c3d8009b8bec5a530167a01ebb473e67be5e97383cdc5", + "notice_file_checksum_type": "SHA-256" }, "work": { - "identifier": "2016_S_001_196390", + "identifier": "2021_S_004_003545", + "cdm_rdf_type": "procurement_public", + "resource_type": "PROCUREMENT_NOTICE", + "uri": "http://data.europa.eu/a4g/resource/2021/003545_2021", "do_not_index": "true", - "date_document": "2016-08-01", - "created_by_agent": "PUBL", - "dataset_published_by_agent": "PUBL", - "datetime_transmission": "2021-08-01T00:01:00", + "date_document": "2021-01-07", + "created_by_agent": "EURUN", + "dataset_published_by_agent": "EURUN", + "datetime_transmission": "2023-02-17T14:32:17.455085", "title": { - "en": "eProcurement notice 196390_2016" + "en": "Construction work" }, - "date_creation": "2016-01-01", - "uri": "http://data.europa.eu/a4g/resource/2016/196390_2016", - "dataset_version": "20160101-0", + "date_creation": "2023-02-17", "concept_type_dataset": "TEST_DATA", + "dataset_version": "20230217-0", "dataset_keyword": [ "eProcurement", "notice" ], - "dataset_has_frequency_publication_frequency": "OTHER" + "dataset_has_frequency_publication_frequency": "OTHER", + "procurement_public_issued_by_country": "CZ", + "procurement_public_url_etendering": [] }, "expression": { + "identifier": "2021_S_004_003545.MUL", "title": { - "en": "eProcurement notice 196390_2016" + "en": "eProcurement notice 2021_S_004_003545" }, - "uses_language": "ENG" + "uses_language": "MUL" }, "manifestation": { - "type": "E_PROCUREMENT_ONTOLOGY", - "date_publication": "2016-08-01", + "identifier": "2021_S_004_003545.MUL.rdf", + "type": "rdf_epo", + "date_publication": "2021-01-07", "distribution_has_status_distribution_status": "COMPLETED", "distribution_has_media_type_concept_media_type": "RDF" } diff --git a/tests/test_data/notice_packager/templates/196390_2016.rdf b/tests/test_data/notice_packager/templates/196390_2016.rdf deleted file mode 100644 index 37bf3584c..000000000 --- a/tests/test_data/notice_packager/templates/196390_2016.rdf +++ /dev/null @@ -1,2873 +0,0 @@ - - - - - - - 39 - - - - - - - 16 92 031 - - - - - - - 3 620 - - - - false - - - <P>Échange standard ou réparation d'émetteur récepteur HF</P> - - - - - 4 - - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - 28 - - - - - - - 16 92 030 - - - - - - - 89 238 - - - - false - - - <P>Acquisition de SN3500 BL.HI.VIBE CLA.B NVIS</P> - - - - - 5 - - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - 18 - - - - - - - 16 92 029 - - - - - - - 37 478 - - - - false - - - <P>Acquisition de diode tuned antenna</P> - - - - - 4 - - - - - - - - - - - - - 9 rue Gustave Eiffel — ZAC de Frégy III - Fontenay-Trésigny - - 77610 - - - - - SEF Industrie - - - - - 2016-05-26 - - - - - - - 43 - - - - - - - 16 92 028 - - - - - - - 1 999 - - - - false - - - <P>Échange standard ou réparation d'émetteur récepteur</P> - - - - - 6 - - - - - - - - - - - - - 6 avenue Didier Daurat — BP 20008 - Blagnac Cedex - - 31701 - - - - - Rockwell Collins France - - - - - 2016-05-25 - - - - - - - 20 - - - - - - - 16 92 030 - - - - - - - 4 199 - - - - false - - - <P>Acquisition d'antenne flexible</P> - - - - - 4 - - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - 46 - - - - - - - 16 92 030 - - - - - - - 2 384 - - - - false - - - <P>Échange standard ou réparation de cadre antenne</P> - - - - - 4 - - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - 24 - - - - - - - 16 92 030 - - - - - - - 1 096 - - - - false - - - <P>Acquisition de préamplificateur et mixeur audio</P> - - - - - 4 - - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - 7 - - - - - - - 16 92 031 - - - - - - - 52 702 - - - - false - - - <P>Acquisition de contrôler CVC-152 (NVG)</P> - - - - - 5 - - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - 22 - - - - - - - 16 92 030 - - - - - - - 16 553 - - - - false - - - <P>Acquisition de feux de position et anti-collision</P> - - - - - 5 - - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - 21 - - - - - - - 16 92 030 - - - - - - - 7 876 - - - - false - - - <P>Acquisition de contacteur d'impact</P> - - - - - 4 - - - - - - - - - - - - - Aéroport de Lyon-Bron — Bp 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - 40 - - - - - - - 16 92 028 - - - - - - - 2 543 - - - - false - - - <P>Échange standard ou réparation d'émetteur récepteur</P> - - - - - 4 - - - - - - - - - - - - - 6 avenue Didier Daurat — BP 20008 - Blagnac Cedex - - 31701 - - - - - Rockwell Collins France - - - - - 2016-05-25 - - - - - - - 4 - - - - - - - 16 92 030 - - - - - - - 376 - - - - false - - - <P>Acquisition d'embase femelle</P> - - - - - 5 - - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and commuter Aircraft - - - - - 2016-05-25 - - - - - - - 14 - - - - - - - 16 92 027 - - - - - - - 5 550 - - - - false - - - <P>Acquisition de cornières</P> - - - - - 3 - - - - - - - - - - - - - 530 chemin Sainte Élisabeth - Vence - - 06140 - - - - - AST Advanced Smart Technologies - - - - - 2016-05-25 - - - - - - - 35 - - - - - - - 16 92 027 - - - - - - - 4 676 - - - - false - - - <P>Échange standard ou réparation de poignée cyclique</P> - - - - - 3 - - - - - - - - - - - - - 530 chemin Sainte Élisabeth - Vence - - 06140 - - - - - AST Advanced Smart Technologies - - - - - 2016-05-25 - - - - - - - 41 - - - - - - - 16 92 031 - - - - - - - 2 187 - - - - false - - - <P>Échange standard ou réparation de récepteur VOR/VIR432</P> - - - - - 6 - - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - 8 - - - - - - - 16 92 031 - - - - - - - 57 576 - - - - false - - - <P>Acquisition de CVC-151 transmitter</P> - - - - - 5 - - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - 32 - - - - - - - 16 92 031 - - - - - - - 19 170 - - - - false - - - <P>Acquisition de switch module</P> - - - - - 5 - - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - 17 - - - - - - - 16 92 029 - - - - - - - 62 285 - - - - false - - - <P>Acquisition de logic converter</P> - - - - - 4 - - - - - - - - - - - - - 9 rue Gustave Eiffel — ZAC de Frégy III - Fontenay-Trésigny - - 77610 - - - - - SEF Industrie - - - - - 2016-05-26 - - - - - - - 11 - - - - - - - 16 92 030 - - - - - - - 8 465 - - - - false - - - <P>Acquisition de ULB Dukane</P> - - - - - 5 - - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - 29 - - - - - - - 16 92 030 - - - - - - - 47 565 - - - - false - - - <P>Acquisition de ADC2000 MS CONN</P> - - - - - 6 - - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - 12 - - - - - - - 16 92 030 - - - - - - - 54 371 - - - - false - - - <P>Acquisition de control panel ADF</P> - - - - - 5 - - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - 10 - - - - - - - 16 92 029 - - - - - - - 2 205 - - - - false - - - <P>Acquisition de sonde de température</P> - - - - - 4 - - - - - - - - - - - - - 9 rue Gustave Eiffel — ZAC de Frégy III - Fontenay-Trésigny - - 77610 - - - - - SEF Industrie - - - - - 2016-05-26 - - - - - - - 19 - - - - - - - 16 92 030 - - - - - - - 8 643 - - - - false - - - <P>Acquisition d' antenne</P> - - - - - 4 - - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - 48 - - - - - - - 16 92 028 - - - - - - - 5 950 - - - - false - - - <P>Échange standard ou réparation de boitier MPU</P> - - - - - 3 - - - - - - - - - - - - - 6 avenue Didier Daurat — BP 20008 - Blagnac Cedex - - 31701 - - - - - Rockwell Collins France - - - - - 2016-05-25 - - - - - - - 23 - - - - - - - 16 92 027 - - - - - - - 17 109 - - - - false - - - <P>Acquisition de porte carte NVG</P> - - - - - 3 - - - - - - - - - - - - - 530 chemin Sainte Élisabeth - Vence - - 06140 - - - - - AST Advanced Smart Technologies - - - - - 2016-05-25 - - - - - - - 5 - - - - - - - 16 92 030 - - - - - - - 361 - - - - false - - - <P>Acquisition de TNC straight plug</P> - - - - - 5 - - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - 31 - - - - - - - 16 92 031 - - - - - - - 16 109 - - - - false - - - <P>Acquisition de ELT 503 transmitter</P> - - - - - 6 - - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - 30 - - - - - - - 16 92 029 - - - - - - - 209 - - - - false - - - <P>Acquisition de OAT stiffener ring</P> - - - - - 3 - - - - - - - - - - - - - 9 rue Gustave Eiffel — ZAC de Frégy III - Fontenay-Trésigny - - 77610 - - - - - SEF Industrie - - - - - 2016-05-26 - - - - - 2016/S 110-196390 - - - - - - - - - - - - 16 92 030 - - - - - - - 1 877 - - - - false - - - <P>Échange standard ou réparation d'émetteur récepteur</P> - - - - - - - - 16 92 031 - - - - - - - 449 217 - - - - false - - - <P>Acquisition d'équipements de radionavigation</P> - - - - - - - 13 - - - - - - 4 - - - - - - - - - 3 - - - - - - - 16 92 031 - - - - - - - 154 396 - - - - false - - - <P>Acquisition d'accéléro uni axial</P> - - - - - 3 - - - - - - - - - - - 16 - - - - - - - 16 92 030 - - - - - - - 10 060 - - - - false - - - <P>Acquisition d'antenne</P> - - - - - 4 - - - - - - - - - 16 92 031 - - - - - - - 8 580 - - - - false - - - <P>Échange standard ou réparation de phare</P> - - - - - - - - 16 92 030 - - - - - - - 462 - - - - false - - - <P>Acquisition de prise coaxiale pour Tacan (connecteur électrique)</P> - - - - - - - - - - - - - - - - 16 92 031 - - - - - - - 68 845 - - - - false - - - <P>Échange standard ou réparation d'écran</P> - - - - - - - - - - 16 92 028 - - - - - - - 39 926 - - - - false - - - <P>Échange standard ou réparation de boite de commande</P> - - - - - - - - 16 92 031 - - - - - - - 38 197 - - - - false - - - <P>Acquisition de batterie pour ELT</P> - - - - - - - 16 92 031 - - - - - - - 29 002 - - - - false - - - <P>Acquisition de batterie pour G-switch</P> - - - - - - - 34 - - - - - - 5 - - - - - - - - - - - - - - - 45 - - - - - - 3 - - - - - - - - - - 2 - - - - - - - 16 92 031 - - - - - - - 2 074 - - - - false - - - <P>Acquisition de raccord mixte statique</P> - - - - - 3 - - - - - - - - <P>SIMMAD-15-AOR-038</P> - - - - - - - - 42 - - - - - - 3 - - - - - - - - - - - 36 - - - - - - - 16 92 031 - - - - - - - 6 000 - - - - false - - - <P>Échange standard ou réparation de poignée collectif copilote</P> - - - - - 4 - - - - - - - - - - <P>Critères d'attribution des lots:</P><P>— les critères d'attribution des lots «acquisition» (lots 1 à 34) sont mentionnés au paragraphe VI.2.1 du présent avis,</P><P>— pour les lots «échange standard» (lots 35 à 48) le critère d'attribution est le prix (pondération 100 %),</P><P>— les montants indiqués ci dessus sont par lots et HT des marchés.</P><P>5 marchés attribués aux sociétés:</P><P>— 16 92 027 Advanced Smart Technologie,</P><P>(lots: 14-23-35) pour un montant total du marché HT de 27 335.00 euro.</P><P>— 16 92 028 Rockwell Collins France,</P><P>(lots: 40-43-47-48) pour un montant total du marché HT de 50 418.00 euro.</P><P>— 16 92 029 SEF Industrie,</P><P>(lots: 10-17-18-30) pour un montant total du marché HT de 102179.27 euro.</P><P>— 16 92 030 Business and Commuter Aircraft,</P><P>(lots :4-5-6-9-11-12-15-16-19-20-21-22-24-28-29-44-46) pour un montant total du marché HT de 277 255.34 euro.</P><P>— 16 92 031 NHE Aero Trading,</P><P>(lots: 1-2-3-7-8-13-31-32-33-34-36-38-39-41-42-45) pour un montant total du marché HT de 911 079.12 euro.</P><P>Les lots 25,26,27 et 37 sont déclarés infructueux.</P><P>Date d'envoi du présent avis au JOUE et au BOAMP: 6.6.2016.</P> - - - - - 16 92 030 - - - - - - - 21 463 - - - - false - - - <P>Acquisition de KMR 675</P> - - - - - - - - - - - - 33 - - - - - - 4 - - - - - - - - - 38 - - - - - - - 16 92 031 - - - - - - - 1 500 - - - - false - - - <P>Échange standard ou réparation de récepteur ADF462</P> - - - - - 5 - - - - - - - - - - - - <P>Fourniture d'équipements aéronautiques avioniques de base civile.</P><P>Le marché prévoit la fourniture par le titulaire d'équipements aéronautiques avioniques de base civile.</P> - - - - - - 1 - - - - - - - 16 92 031 - - - - - - - 1 900 - - - - false - - - <P>Acquisition de ventilateur</P> - - - - - 4 - - - - - - - - - - - - - 44 - - - - - - 6 - - - - - <P>Fourniture d'équipements aéronautiques avioniques de base civile.</P> - - - - - - - - - 47 - - - - - - 3 - - - - - - - - - - 16 92 030 - - - - - - - 2 258 - - - - false - - - <P>Acquisition de ampli radio</P> - - - - - - - - - - +33 533053827 - simmad-scf.resp-contrat.fct@intradef.gouv.fr - +33 533053825 - - - - - - - - - M. le directeur adjoint industrie et chef du service des contrats et des finances de la SIMMAD - Structure intégrée du maintien en condition opérationnelle des matériels aéronautiques du ministère de la défense — balard Parcelle Victor, 60 boulevard du général Martial Valin - Paris Cedex 15 - - 75509 - - - - - MINDEF/SIMMAD - - - - - - - - - 9 - - - - - - 5 - - - - - - - - - - - - - - - 15 - - - - - - 5 - - - - - - - - - - - - 6 - - - - - - 5 - - - - - - - - - - - http://ted.europa.eu/udl?uri=TED:NOTICE:196390-2016:TEXT:FR:HTML - - - - - - - - 2016-06-06 - - - - - 20160609 - Please note that some elements from the F18 are not mappable to the eProcurement Ontology which was designed in the eNotification phase for Commission Implementing Regulation (EU) 2019/1780 . The population of the knowledge graph will therefore not take into consideration the following xpaths from the published notices: - -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/CONTRACTING_AUTHORITY_INFORMATION_CONTRACT_AWARD_DEFENCE/TYPE_AND_ACTIVITIES_OR_CONTRACTING_ENTITY_AND_PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF_NO -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/CONTRACTING_AUTHORITY_INFORMATION_CONTRACT_AWARD_DEFENCE/TYPE_AND_ACTIVITIES_OR_CONTRACTING_ENTITY_AND_PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF_YES/CONTACT_DATA_OTHER_BEHALF_CONTRACTING_AUTORITHY/ORGANISATION/OFFICIALNAME -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/CONTRACTING_AUTHORITY_INFORMATION_CONTRACT_AWARD_DEFENCE/TYPE_AND_ACTIVITIES_OR_CONTRACTING_ENTITY_AND_PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF_YES/CONTACT_DATA_OTHER_BEHALF_CONTRACTING_AUTORITHY/ORGANISATION/NATIONALID -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/CONTRACTING_AUTHORITY_INFORMATION_CONTRACT_AWARD_DEFENCE/TYPE_AND_ACTIVITIES_OR_CONTRACTING_ENTITY_AND_PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF_YES/CONTACT_DATA_OTHER_BEHALF_CONTRACTING_AUTORITHY/ADDRESS -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/CONTRACTING_AUTHORITY_INFORMATION_CONTRACT_AWARD_DEFENCE/TYPE_AND_ACTIVITIES_OR_CONTRACTING_ENTITY_AND_PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF_YES/CONTACT_DATA_OTHER_BEHALF_CONTRACTING_AUTORITHY/TOWN -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/CONTRACTING_AUTHORITY_INFORMATION_CONTRACT_AWARD_DEFENCE/TYPE_AND_ACTIVITIES_OR_CONTRACTING_ENTITY_AND_PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF_YES/CONTACT_DATA_OTHER_BEHALF_CONTRACTING_AUTORITHY/POSTAL_CODE -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/CONTRACTING_AUTHORITY_INFORMATION_CONTRACT_AWARD_DEFENCE/TYPE_AND_ACTIVITIES_OR_CONTRACTING_ENTITY_AND_PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF/PURCHASING_ON_BEHALF_YES/CONTACT_DATA_OTHER_BEHALF_CONTRACTING_AUTORITHY/COUNTRY -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/OBJECT_CONTRACT_INFORMATION_CONTRACT_AWARD_NOTICE_DEFENCE/DESCRIPTION_AWARD_NOTICE_INFORMATION_DEFENCE/TYPE_CONTRACT_W_PUB_DEFENCE/TYPE_WORK_CONTRACT/DESIGN_EXECUTION -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/OBJECT_CONTRACT_INFORMATION_CONTRACT_AWARD_NOTICE_DEFENCE/DESCRIPTION_AWARD_NOTICE_INFORMATION_DEFENCE/TYPE_CONTRACT_W_PUB_DEFENCE/TYPE_WORK_CONTRACT/EXECUTION -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/OBJECT_CONTRACT_INFORMATION_CONTRACT_AWARD_NOTICE_DEFENCE/DESCRIPTION_AWARD_NOTICE_INFORMATION_DEFENCE/TYPE_CONTRACT_W_PUB_DEFENCE/TYPE_WORK_CONTRACT/REALISATION_REQUIREMENTS_SPECIFIED_CONTRACTING_AUTHORITIES -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/OBJECT_CONTRACT_INFORMATION_CONTRACT_AWARD_NOTICE_DEFENCE/DESCRIPTION_AWARD_NOTICE_INFORMATION_DEFENCE/TYPE_CONTRACT_W_PUB_DEFENCE/TYPES_SUPPLIES_CONTRACT/HIRE_PURCHASE -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/OBJECT_CONTRACT_INFORMATION_CONTRACT_AWARD_NOTICE_DEFENCE/DESCRIPTION_AWARD_NOTICE_INFORMATION_DEFENCE/TYPE_CONTRACT_W_PUB_DEFENCE/TYPES_SUPPLIES_CONTRACT/RENTAL -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/OBJECT_CONTRACT_INFORMATION_CONTRACT_AWARD_NOTICE_DEFENCE/DESCRIPTION_AWARD_NOTICE_INFORMATION_DEFENCE/TYPE_CONTRACT_W_PUB_DEFENCE/TYPES_SUPPLIES_CONTRACT/LEASE -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/OBJECT_CONTRACT_INFORMATION_CONTRACT_AWARD_NOTICE_DEFENCE/DESCRIPTION_AWARD_NOTICE_INFORMATION_DEFENCE/TYPE_CONTRACT_W_PUB_DEFENCE/TYPES_SUPPLIES_CONTRACT/PURCHASE -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/OBJECT_CONTRACT_INFORMATION_CONTRACT_AWARD_NOTICE_DEFENCE/DESCRIPTION_AWARD_NOTICE_INFORMATION_DEFENCE/TYPE_CONTRACT_W_PUB_DEFENCE/TYPES_SUPPLIES_CONTRACT/COMBINATION_THESE -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/OBJECT_CONTRACT_INFORMATION_CONTRACT_AWARD_NOTICE_DEFENCE/DESCRIPTION_AWARD_NOTICE_INFORMATION_DEFENCE/TYPE_CONTRACT_W_PUB_DEFENCE/SERVICE_CATEGORY_PUB_DEFENCE/xs:string(ANNEX C3) -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/OBJECT_CONTRACT_INFORMATION_CONTRACT_AWARD_NOTICE_DEFENCE/DESCRIPTION_AWARD_NOTICE_INFORMATION_DEFENCE/CPV/CPV_MAIN/CPV_SUPPLEMENTARY_CODE -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/OBJECT_CONTRACT_INFORMATION_CONTRACT_AWARD_NOTICE_DEFENCE/DESCRIPTION_AWARD_NOTICE_INFORMATION_DEFENCE/CPV/CPV_ADDITIONAL/CPV_SUPPLEMENTARY_CODE -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/AWARD_CRITERIA_CONTRACT_AWARD_NOTICE_INFORMATION_DEFENCE/AWARD_CRITERIA_DETAIL_F18/LOWEST_PRICE -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/AWARD_CRITERIA_CONTRACT_AWARD_NOTICE_INFORMATION_DEFENCE/AWARD_CRITERIA_DETAIL_F18/MOST_ECONOMICALLY_ADVANTAGEOUS_TENDER_SHORT -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/AWARD_CRITERIA_CONTRACT_AWARD_NOTICE_INFORMATION_DEFENCE/AWARD_CRITERIA_DETAIL_F18/MOST_ECONOMICALLY_ADVANTAGEOUS_TENDER_SHORT/CRITERIA_DEFINITION/ORDER_C -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/AWARD_CRITERIA_CONTRACT_AWARD_NOTICE_INFORMATION_DEFENCE/AWARD_CRITERIA_DETAIL_F18/MOST_ECONOMICALLY_ADVANTAGEOUS_TENDER_SHORT/CRITERIA_DEFINITION/CRITERIA -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/AWARD_CRITERIA_CONTRACT_AWARD_NOTICE_INFORMATION_DEFENCE/AWARD_CRITERIA_DETAIL_F18/MOST_ECONOMICALLY_ADVANTAGEOUS_TENDER_SHORT/CRITERIA_DEFINITION/WEIGHTING -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/AWARD_CRITERIA_CONTRACT_AWARD_NOTICE_INFORMATION_DEFENCE/F18_IS_ELECTRONIC_AUCTION_USABLE_NO -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/ADMINISTRATIVE_INFORMATION_CONTRACT_AWARD_DEFENCE/PREVIOUS_PUBLICATION_INFORMATION_NOTICE_F18/NO_PREVIOUS_PUBLICATION_EXISTS_F18 -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/TYPE_OF_PROCEDURE_CONTRACT_AWARD_DEFENCE/F18_PT_NEGOTIATED_WITHOUT_PUBLICATION_CONTRACT_NOTICE/ANNEX_D/JUSTIFICATION_CHOICE_NEGOCIATED_PROCEDURE/REASONS_PROVIDED_PARTICULAR_TENDERER -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/TYPE_OF_PROCEDURE_CONTRACT_AWARD_DEFENCE/F18_PT_NEGOTIATED_WITHOUT_PUBLICATION_CONTRACT_NOTICE/ANNEX_D/JUSTIFICATION_CHOICE_NEGOCIATED_PROCEDURE/PURCHASE_SUPPLIES_ADVANTAGEOUS_TERMS -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/TYPE_OF_PROCEDURE_CONTRACT_AWARD_DEFENCE/F18_PT_NEGOTIATED_WITHOUT_PUBLICATION_CONTRACT_NOTICE/ANNEX_D/OTHER_JUSTIFICATION/CONTRACT_SERVICES_OUTSIDE_DIRECTIVE -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/TYPE_OF_PROCEDURE_CONTRACT_AWARD_DEFENCE/F18_PT_NEGOTIATED_WITHOUT_PUBLICATION_CONTRACT_NOTICE/ANNEX_D/NO_ONLY_IRREGULAR_INACCEPTABLE_TENDERERSONLY_IRREGULAR_INACCEPTABLE_TENDERERS -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/TYPE_OF_PROCEDURE_CONTRACT_AWARD_DEFENCE/F18_PT_NEGOTIATED_WITHOUT_PUBLICATION_CONTRACT_NOTICE/ANNEX_D/JUSTIFICATION_CHOICE_NEGOCIATED_PROCEDURE/NO_PERIOD_FOR_PROCEDURE_INCOMPATIBLE_WITH_CRISIS -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/TYPE_OF_PROCEDURE_CONTRACT_AWARD_DEFENCE/F18_PT_NEGOTIATED_WITHOUT_PUBLICATION_CONTRACT_NOTICE/ANNEX_D/JUSTIFICATION_CHOICE_NEGOCIATED_PROCEDURE/NO_CONTRACT_RESEARCH_DIRECTIVE -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/TYPE_OF_PROCEDURE_CONTRACT_AWARD_DEFENCE/F18_PT_NEGOTIATED_WITHOUT_PUBLICATION_CONTRACT_NOTICE/ANNEX_D/JUSTIFICATION_CHOICE_NEGOCIATED_PROCEDURE/NO_MANUFACTURED_BY_DIRECTIVE -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/TYPE_OF_PROCEDURE_CONTRACT_AWARD_DEFENCE/F18_PT_NEGOTIATED_WITHOUT_PUBLICATION_CONTRACT_NOTICE/ANNEX_D/JUSTIFICATION_CHOICE_NEGOCIATED_PROCEDURE/NO_ADDITIONAL_WORKS -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/TYPE_OF_PROCEDURE_CONTRACT_AWARD_DEFENCE/F18_PT_NEGOTIATED_WITHOUT_PUBLICATION_CONTRACT_NOTICE/ANNEX_D/JUSTIFICATION_CHOICE_NEGOCIATED_PROCEDURE/NO_SUPPLIES_QUOTED_PURCHASED_COMMODITY_MARKET -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/TYPE_OF_PROCEDURE_CONTRACT_AWARD_DEFENCE/F18_PT_NEGOTIATED_WITHOUT_PUBLICATION_CONTRACT_NOTICE/ANNEX_D/JUSTIFICATION_CHOICE_NEGOCIATED_PROCEDURE/NO_WORKS_REPETITION_EXISTING_WORKS -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/PROCEDURE_DEFINITION_CONTRACT_AWARD_NOTICE_DEFENCE/TYPE_OF_PROCEDURE_CONTRACT_AWARD_DEFENCE/F18_PT_NEGOTIATED_WITHOUT_PUBLICATION_CONTRACT_NOTICE/ANNEX_D/JUSTIFICATION_CHOICE_NEGOCIATED_PROCEDURE/NO_AIR_MARITIME_TRANSPORT_FOR_ARMED_FORCES_DEPLOYMENT -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/AWARD_OF_CONTRACT_DEFENCE/CONTRACT_VALUE_INFORMATION/MORE_INFORMATION_IF_ANNUAL_MONTHLY -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/AWARD_OF_CONTRACT_DEFENCE/CONTRACT_VALUE_INFORMATION/MORE_INFORMATION_IF_ANNUAL_MONTHLY/NUMBER_OF_YEARS -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/AWARD_OF_CONTRACT_DEFENCE/CONTRACT_VALUE_INFORMATION/MORE_INFORMATION_IF_ANNUAL_MONTHLY/NUMBER_OF_MONTHS -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/AWARD_OF_CONTRACT_DEFENCE/CONTRACT_VALUE_INFORMATION/MORE_INFORMATION_TO_SUB_CONTRACTED/CONTRACT_LIKELY_SUB_CONTRACTED_WITH_DEFENCE/EXCLUDING_VAT_VALUE/FMTVAL -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/AWARD_OF_CONTRACT_DEFENCE/CONTRACT_VALUE_INFORMATION/MORE_INFORMATION_TO_SUB_CONTRACTED/CONTRACT_LIKELY_SUB_CONTRACTED_WITH_DEFENCE/EXCLUDING_VAT_VALUE/CURRENCY -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/AWARD_OF_CONTRACT_DEFENCE/CONTRACT_VALUE_INFORMATION/MORE_INFORMATION_TO_SUB_CONTRACTED/CONTRACT_LIKELY_SUB_CONTRACTED_WITH_DEFENCE/EXCLUDING_VAT_PRCT -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/AWARD_OF_CONTRACT_DEFENCE/CONTRACT_VALUE_INFORMATION/MORE_INFORMATION_TO_SUB_CONTRACTED/CONTRACT_LIKELY_SUB_CONTRACTED_WITH_DEFENCE/UNKNOWN_VALUE -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/AWARD_OF_CONTRACT_DEFENCE/CONTRACT_VALUE_INFORMATION/MORE_INFORMATION_TO_SUB_CONTRACTED/CONTRACT_LIKELY_SUB_CONTRACTED_WITH_DEFENCE/ADDITIONAL_INFORMATION -CONTRACT_AWARD_DEFENCE/FD_CONTRACT_AWARD_DEFENCE/AWARD_OF_CONTRACT_DEFENCE/CONTRACT_VALUE_INFORMATION/MORE_INFORMATION_TO_SUB_CONTRACTED/CONTRACT_LIKELY_SUB_CONTRACTED_WITH_DEFENCE/SUBCONTRACT_DEFENCE/SUBCONTRACT_AWARD_PART - - - - - - - - - - - - 6 avenue Didier Daurat — BP 20008 - Blagnac Cedex - - 31701 - - - - - Rockwell Collins France - - - - - 2016-05-25 - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and commuter Aircraft - - - - - 2016-05-25 - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - +33 144594646 - greffe.ta-paris@juradm.fr - +33 144594400 - - - - - +33 144594646 - greffe.ta-paris@juradm.fr - +33 144594400 - - - - - - - - - - 7 rue de Jouy - Paris Cedex 4 - 75181 - - - - - Tribunal administratif de Paris - - - - - - - - - 7 rue de Jouy - Paris Cedex 4 - 75181 - - - - - Tribunal administratif de Paris - - - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - - - - - - 7 rue de la Violette - Quévert - - 22100 - - - - - NHE Aero Trading - - - - - 2016-05-25 - - - - - - - - - - - - Aéroport de Lyon-Bron — BP 83 - Bron Cedex - - 69672 - - - - - Business and Commuter Aircraft - - - - - 2016-05-25 - - diff --git a/tests/test_data/notice_packager/templates/196390_2016_mets2create.mets.xml b/tests/test_data/notice_packager/templates/196390_2016_mets2create.mets.xml deleted file mode 100644 index d107961c8..000000000 --- a/tests/test_data/notice_packager/templates/196390_2016_mets2create.mets.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - 2016_S_001_196390_create - - - - - - - - - - - - - - - - - -
-
-
- -
-
-
-
- - - - - -
diff --git a/tests/test_data/notice_packager/templates/196390_2016_mets2update.mets.xml b/tests/test_data/notice_packager/templates/196390_2016_mets2update.mets.xml deleted file mode 100644 index 80541980f..000000000 --- a/tests/test_data/notice_packager/templates/196390_2016_mets2update.mets.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - 2016_S_001_196390_update - - - - - - - - - - - - - - - - - -
-
-
- -
-
-
-
- - - - - -
diff --git a/tests/test_data/notice_packager/templates/196390_2016-0.mets.xml.dmd.rdf b/tests/test_data/notice_packager/templates/2021_S_004_003545_0.mets.xml.dmd.rdf similarity index 55% rename from tests/test_data/notice_packager/templates/196390_2016-0.mets.xml.dmd.rdf rename to tests/test_data/notice_packager/templates/2021_S_004_003545_0.mets.xml.dmd.rdf index 03db5b53f..cfb620e51 100644 --- a/tests/test_data/notice_packager/templates/196390_2016-0.mets.xml.dmd.rdf +++ b/tests/test_data/notice_packager/templates/2021_S_004_003545_0.mets.xml.dmd.rdf @@ -9,26 +9,28 @@ xmlns:dct="http://purl.org/dc/terms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - + - + ted:2021_S_004_003545 true - 2016-08-01 - - eProcurement notice 196390_2016 - 2021-08-01T00:01:00 + 2021-01-07 + + 2021004 + Construction work + 003545 + 2023-02-17T14:32:17.455085 - - - eProcurement notice 196390_2016 - + + + eProcurement notice 2021_S_004_003545 + - - - E_PROCUREMENT_ONTOLOGY - 2016-08-01 + + + rdf_epo + 2021-01-07 \ No newline at end of file diff --git a/tests/test_data/notice_packager/templates/2021_S_004_003545_0.notice.rdf b/tests/test_data/notice_packager/templates/2021_S_004_003545_0.notice.rdf new file mode 100644 index 000000000..a9fbfdbc8 --- /dev/null +++ b/tests/test_data/notice_packager/templates/2021_S_004_003545_0.notice.rdf @@ -0,0 +1,254 @@ +@prefix cccev: . +@prefix dct: . +@prefix epd: . +@prefix epo: . +@prefix locn: . +@prefix org: . +@prefix owl: . +@prefix ql: . +@prefix rdf: . +@prefix rdfs: . +@prefix rml: . +@prefix rr: . +@prefix skos: . +@prefix tedm: . +@prefix time: . +@prefix xsd: . + +epd:id_2021-S-004-003545_AwardCriterionPrice_DRhJdosd6Y9c3T8UnSgTC9 a epo:AwardCriterion; + epo:hasAwardCriterionType . + +epd:id_2021-S-004-003545_AwardCriterionPrice_FowJL4khGZR579pakhqkDn a epo:AwardCriterion; + epo:hasAwardCriterionType . + +epd:id_2021-S-004-003545_AwardCriterionPrice_ewZirA4QTmyLrLffbmoC4T a epo:AwardCriterion; + epo:hasAwardCriterionType . + +epd:id_2021-S-004-003545_Buyer_2DfWDD3NHHwpMGiWwzLc5d a epo:Buyer; + epo:hasContactPointInRole epd:id_2021-S-004-003545_ContactPoint_UU5jeWb9wCr2uQLNME2nwM; + epo:playedBy epd:id_2021-S-004-003545_Organisation_UU5jeWb9wCr2uQLNME2nwM . + +epd:id_2021-S-004-003545_ContactPoint_UU5jeWb9wCr2uQLNME2nwM a cccev:ContactPoint; + epo:hasInternetAddress "www.mvcr.cz"^^xsd:anyURI; + cccev:email "kamila.terlova@pcr.cz" . + +epd:id_2021-S-004-003545_ContractTermLocationAddress_892jPigYFVfQuuQEioV5g7 a locn:Address; + locn:fullAddress "Kutná Hora"@cs . + +epd:id_2021-S-004-003545_ContractTermLocationAddress_DgNm7RuiSQ47VBTvdrHsRv a locn:Address; + locn:fullAddress "Kutná Hora"@cs . + +epd:id_2021-S-004-003545_ContractTermLocationAddress_diPp46XcmeHRAMFFenhpzZ a locn:Address; + locn:fullAddress "Kutná Hora"@cs . + +epd:id_2021-S-004-003545_ContractTermLocation_892jPigYFVfQuuQEioV5g7 a dct:Location; + epo:hasNutsCode ; + locn:address epd:id_2021-S-004-003545_ContractTermLocationAddress_892jPigYFVfQuuQEioV5g7 . + +epd:id_2021-S-004-003545_ContractTermLocation_DgNm7RuiSQ47VBTvdrHsRv a dct:Location; + epo:hasNutsCode ; + locn:address epd:id_2021-S-004-003545_ContractTermLocationAddress_DgNm7RuiSQ47VBTvdrHsRv . + +epd:id_2021-S-004-003545_ContractTermLocation_diPp46XcmeHRAMFFenhpzZ a dct:Location; + epo:hasNutsCode ; + locn:address epd:id_2021-S-004-003545_ContractTermLocationAddress_diPp46XcmeHRAMFFenhpzZ . + +epd:id_2021-S-004-003545_ContractTerm_892jPigYFVfQuuQEioV5g7 a epo:ContractTerm; + epo:definesSpecificPlaceOfPerformance epd:id_2021-S-004-003545_ContractTermLocation_892jPigYFVfQuuQEioV5g7; + epo:hasOptions false . + +epd:id_2021-S-004-003545_ContractTerm_DgNm7RuiSQ47VBTvdrHsRv a epo:ContractTerm; + epo:definesSpecificPlaceOfPerformance epd:id_2021-S-004-003545_ContractTermLocation_DgNm7RuiSQ47VBTvdrHsRv; + epo:hasOptions false . + +epd:id_2021-S-004-003545_ContractTerm_diPp46XcmeHRAMFFenhpzZ a epo:ContractTerm; + epo:definesSpecificPlaceOfPerformance epd:id_2021-S-004-003545_ContractTermLocation_diPp46XcmeHRAMFFenhpzZ; + epo:hasOptions false . + +epd:id_2021-S-004-003545_Fund_892jPigYFVfQuuQEioV5g7 a epo:Fund; + epo:hasDescription "Evropský fond pro regionální rozvoj - operační program životního prostředí - UV955/2016 - Revitalizace areálu Kutná Hora, Kouřimská 1009"@cs . + +epd:id_2021-S-004-003545_Fund_DgNm7RuiSQ47VBTvdrHsRv a epo:Fund; + epo:hasDescription "Evropský fond pro regionální rozvoj - operační program životního prostředí - UV955/2016 - Revitalizace areálu Kutná Hora, Kouřimská 1009"@cs . + +epd:id_2021-S-004-003545_Fund_diPp46XcmeHRAMFFenhpzZ a epo:Fund; + epo:hasDescription "Evropský fond pro regionální rozvoj - operační program životního prostředí - UV955/2016 - Revitalizace areálu Kutná Hora, Kouřimská 1009"@cs . + +epd:id_2021-S-004-003545_LotAwardOutcome_KaeDJ6cSC7UaS6sXtDUnvf a epo:LotAwardOutcome; + epo:describesLot epd:id_2021-S-004-003545_Lot_DgNm7RuiSQ47VBTvdrHsRv; + epo:hasAwardStatus ; + epo:hasNonAwardJustification . + +epd:id_2021-S-004-003545_LotAwardOutcome_P2VSufQndGRkHvUySMbAhc a epo:LotAwardOutcome; + epo:describesLot epd:id_2021-S-004-003545_Lot_diPp46XcmeHRAMFFenhpzZ; + epo:hasAwardStatus ; + epo:hasNonAwardJustification . + +epd:id_2021-S-004-003545_LotAwardOutcome_PQBPvqdyF5Muuezd58jcsm a epo:LotAwardOutcome; + epo:describesLot epd:id_2021-S-004-003545_Lot_892jPigYFVfQuuQEioV5g7; + epo:hasAwardStatus ; + epo:hasNonAwardJustification . + +epd:id_2021-S-004-003545_LotIdentifier_892jPigYFVfQuuQEioV5g7 a epo:Identifier; + epo:hasIdentifierValue "3" . + +epd:id_2021-S-004-003545_LotIdentifier_DgNm7RuiSQ47VBTvdrHsRv a epo:Identifier; + epo:hasIdentifierValue "1" . + +epd:id_2021-S-004-003545_LotIdentifier_diPp46XcmeHRAMFFenhpzZ a epo:Identifier; + epo:hasIdentifierValue "2" . + +epd:id_2021-S-004-003545_LotPurpose_892jPigYFVfQuuQEioV5g7 a epo:Purpose; + epo:hasAdditionalClassification . + +epd:id_2021-S-004-003545_LotPurpose_DgNm7RuiSQ47VBTvdrHsRv a epo:Purpose; + epo:hasAdditionalClassification . + +epd:id_2021-S-004-003545_LotPurpose_diPp46XcmeHRAMFFenhpzZ a epo:Purpose; + epo:hasAdditionalClassification . + +epd:id_2021-S-004-003545_Lot_892jPigYFVfQuuQEioV5g7 a epo:Lot; + epo:foreseesContractSpecificTerm epd:id_2021-S-004-003545_ContractTerm_892jPigYFVfQuuQEioV5g7; + epo:hasDescription "Provedení stavby v rozsahu prováděcí projektové dokumentace pro provedení stavby a soupisem stavebních prací, dodávek a služeb s výkazem výměr."@cs; + epo:hasID epd:id_2021-S-004-003545_LotIdentifier_892jPigYFVfQuuQEioV5g7; + epo:hasPurpose epd:id_2021-S-004-003545_LotPurpose_892jPigYFVfQuuQEioV5g7; + epo:hasTitle "Část C - Víceúčelový sál"@cs; + epo:isFundedBy epd:id_2021-S-004-003545_Fund_892jPigYFVfQuuQEioV5g7; + epo:isSubjectToLotSpecificTerm epd:id_2021-S-004-003545_ReviewTerm_jG5VjxWThsx6R9XUAaxN6G; + epo:isUsingEUFunds true; + epo:specifiesAwardCriterion epd:id_2021-S-004-003545_AwardCriterionPrice_ewZirA4QTmyLrLffbmoC4T . + +epd:id_2021-S-004-003545_Lot_DgNm7RuiSQ47VBTvdrHsRv a epo:Lot; + epo:foreseesContractSpecificTerm epd:id_2021-S-004-003545_ContractTerm_DgNm7RuiSQ47VBTvdrHsRv; + epo:hasDescription "Provedení stavby v rozsahu prováděcí projektové dokumentace pro provedení stavby a soupisem stavebních prací, dodávek a služeb s výkazem výměr."@cs; + epo:hasID epd:id_2021-S-004-003545_LotIdentifier_DgNm7RuiSQ47VBTvdrHsRv; + epo:hasPurpose epd:id_2021-S-004-003545_LotPurpose_DgNm7RuiSQ47VBTvdrHsRv; + epo:hasTitle "Část A - Školící objekt"@cs; + epo:isFundedBy epd:id_2021-S-004-003545_Fund_DgNm7RuiSQ47VBTvdrHsRv; + epo:isSubjectToLotSpecificTerm epd:id_2021-S-004-003545_ReviewTerm_jG5VjxWThsx6R9XUAaxN6G; + epo:isUsingEUFunds true; + epo:specifiesAwardCriterion epd:id_2021-S-004-003545_AwardCriterionPrice_DRhJdosd6Y9c3T8UnSgTC9 . + +epd:id_2021-S-004-003545_Lot_diPp46XcmeHRAMFFenhpzZ a epo:Lot; + epo:foreseesContractSpecificTerm epd:id_2021-S-004-003545_ContractTerm_diPp46XcmeHRAMFFenhpzZ; + epo:hasDescription "Provedení stavby v rozsahu prováděcí projektové dokumentace pro provedení stavby a soupisem stavebních prací, dodávek a služeb s výkazem výměr."@cs; + epo:hasID epd:id_2021-S-004-003545_LotIdentifier_diPp46XcmeHRAMFFenhpzZ; + epo:hasPurpose epd:id_2021-S-004-003545_LotPurpose_diPp46XcmeHRAMFFenhpzZ; + epo:hasTitle "Část B - Ubytovací objekt"@cs; + epo:isFundedBy epd:id_2021-S-004-003545_Fund_diPp46XcmeHRAMFFenhpzZ; + epo:isSubjectToLotSpecificTerm epd:id_2021-S-004-003545_ReviewTerm_jG5VjxWThsx6R9XUAaxN6G; + epo:isUsingEUFunds true; + epo:specifiesAwardCriterion epd:id_2021-S-004-003545_AwardCriterionPrice_FowJL4khGZR579pakhqkDn . + +epd:id_2021-S-004-003545_Notice a epo:Notice, epo:ResultNotice; + epo:announcesNoticeAwardInformation epd:id_2021-S-004-003545_NoticeAwardInformation_faF7Q5dyoGpXu3Ru4RGg73; + epo:announcesRole epd:id_2021-S-004-003545_ReviewProcedureInformationProvider_eP5uWDhd4iYABCZbaj8dzQ, + epd:id_2021-S-004-003545_Reviewer_bdZjimbzCaRXbeYeBmF94j; + epo:hasDispatchDate "2021-01-02"^^xsd:date; + epo:hasID epd:id_2021-S-004-003545_NoticeIdentifier_C5nS5y4XErvUqzRNMARW8r; + epo:refersToLot epd:id_2021-S-004-003545_Lot_892jPigYFVfQuuQEioV5g7, epd:id_2021-S-004-003545_Lot_DgNm7RuiSQ47VBTvdrHsRv, + epd:id_2021-S-004-003545_Lot_diPp46XcmeHRAMFFenhpzZ; + epo:refersToPrevious epd:id_2021-S-004-003545_Notice; + epo:refersToProcedure epd:id_2021-S-004-003545_Procedure_faF7Q5dyoGpXu3Ru4RGg73; + epo:refersToRole epd:id_2021-S-004-003545_Buyer_2DfWDD3NHHwpMGiWwzLc5d . + +epd:id_2021-S-004-003545_NoticeAwardInformation_faF7Q5dyoGpXu3Ru4RGg73 a epo:NoticeAwardInformation . + +epd:id_2021-S-004-003545_NoticeIdentifier_C5nS5y4XErvUqzRNMARW8r a epo:Identifier; + epo:hasIdentifierValue "2020/S 255-639330" . + +epd:id_2021-S-004-003545_OrganisationAddress_UU5jeWb9wCr2uQLNME2nwM a locn:Address; + epo:hasCountryCode ; + epo:hasNutsCode ; + locn:postCode "170 34"; + locn:postName "Praha"; + locn:thoroughfare "Nad Štolou 936/3" . + +epd:id_2021-S-004-003545_OrganisationIdentifier_UU5jeWb9wCr2uQLNME2nwM a epo:Identifier; + epo:hasIdentifierValue "00007064" . + +epd:id_2021-S-004-003545_Organisation_UU5jeWb9wCr2uQLNME2nwM a org:Organization; + epo:hasBuyerLegalType ; + epo:hasID epd:id_2021-S-004-003545_OrganisationIdentifier_UU5jeWb9wCr2uQLNME2nwM; + epo:hasLegalName "Česká republika - Ministerstvo vnitra"@cs; + epo:hasMainActivity , + ; + cccev:registeredAddress epd:id_2021-S-004-003545_OrganisationAddress_UU5jeWb9wCr2uQLNME2nwM . + +epd:id_2021-S-004-003545_ProcedurePurpose_faF7Q5dyoGpXu3Ru4RGg73 a epo:Purpose; + epo:hasContractNatureType ; + epo:hasMainClassification . + +epd:id_2021-S-004-003545_ProcedureSpecificTerm_2DfWDD3NHHwpMGiWwzLc5d a epo:ProcedureSpecificTerm . + +epd:id_2021-S-004-003545_ProcedureTerm_faF7Q5dyoGpXu3Ru4RGg73 a epo:ProcedureTerm . + +epd:id_2021-S-004-003545_Procedure_faF7Q5dyoGpXu3Ru4RGg73 a epo:Procedure; + epo:foreseesContractSpecificTerm epd:id_2021-S-004-003545_ContractTerm_892jPigYFVfQuuQEioV5g7, + epd:id_2021-S-004-003545_ContractTerm_DgNm7RuiSQ47VBTvdrHsRv, epd:id_2021-S-004-003545_ContractTerm_diPp46XcmeHRAMFFenhpzZ; + epo:hasDescription "Provedení stavby v rozsahu prováděcí projektové dokumentace pro provedení stavby a soupisem stavebních prací, dodávek a služeb s výkazem výměr."@cs; + epo:hasLegalBasis ; + epo:hasProcedureType ; + epo:hasProcurementScopeDividedIntoLot epd:id_2021-S-004-003545_Lot_892jPigYFVfQuuQEioV5g7, + epd:id_2021-S-004-003545_Lot_DgNm7RuiSQ47VBTvdrHsRv, epd:id_2021-S-004-003545_Lot_diPp46XcmeHRAMFFenhpzZ; + epo:hasPurpose epd:id_2021-S-004-003545_ProcedurePurpose_faF7Q5dyoGpXu3Ru4RGg73; + epo:hasTitle "Zateplení objektů - Kutná Hora"@cs; + epo:isCoveredByGPA true; + epo:isSubjectToProcedureSpecificTerm epd:id_2021-S-004-003545_ProcedureSpecificTerm_2DfWDD3NHHwpMGiWwzLc5d, + epd:id_2021-S-004-003545_ProcedureTerm_faF7Q5dyoGpXu3Ru4RGg73 . + +epd:id_2021-S-004-003545_ReviewProcedureInformationProviderAddress_eP5uWDhd4iYABCZbaj8dzQ + a locn:Address; + epo:hasCountryCode ; + locn:postCode "604 55"; + locn:postName "Brno"; + locn:thoroughfare "tř. Kpt. Jaroše 7" . + +epd:id_2021-S-004-003545_ReviewProcedureInformationProviderContactPoint_eP5uWDhd4iYABCZbaj8dzQ + a cccev:ContactPoint; + epo:hasFax "+420 542167112"; + epo:hasInternetAddress "https://www.uohs.cz/"^^xsd:anyURI; + cccev:email "posta@uohs.cz"; + cccev:telephone "+420 542167111" . + +epd:id_2021-S-004-003545_ReviewProcedureInformationProviderOrganisation_eP5uWDhd4iYABCZbaj8dzQ + a org:Organization; + epo:hasLegalName "Úřad pro ochranu hospodářské soutěže"@cs; + epo:hasPrimaryContactPoint epd:id_2021-S-004-003545_ReviewProcedureInformationProviderContactPoint_eP5uWDhd4iYABCZbaj8dzQ; + cccev:registeredAddress epd:id_2021-S-004-003545_ReviewProcedureInformationProviderAddress_eP5uWDhd4iYABCZbaj8dzQ . + +epd:id_2021-S-004-003545_ReviewProcedureInformationProvider_eP5uWDhd4iYABCZbaj8dzQ + a epo:ReviewProcedureInformationProvider; + epo:playedBy epd:id_2021-S-004-003545_ReviewProcedureInformationProviderOrganisation_eP5uWDhd4iYABCZbaj8dzQ . + +epd:id_2021-S-004-003545_ReviewTerm_jG5VjxWThsx6R9XUAaxN6G a epo:ReviewTerm; + epo:hasReviewDeadlineInformation "Podmínkou pro podání návrhu k ÚOHS je podání námitek k Zadavateli, které je nutné doručit do 15 dnů ode dne, kdy se stěžovatel dozvěděl o domnělém porušení zákona Zadavatelem, nejpozději však do uzavření smlouvy nebo do chvíle, kdy se soutěž o návrh považuje po výběru návrhu za ukončenou.Námitky proti úkonům oznamovaným v dokumentech, které je Zadavatel povinen podle zákona uveřejnit či odeslat stěžovateli, musí být doručeny Zadavateli do 15 dnů od jejich uveřejnění či doručení stěžovateli.Pokud je v zadávacím řízení stanovena lhůta pro podání žádostí o účast, musí být námitky proti podmínkám vztahujícím se ke kvalifikaci dodavatele doručeny Zadavateli nejpozději do skončení této lhůty.Pokud je v zadávacím řízení stanovena lhůta pro podání nabídek, musí být námitky proti zadávací dokumentaci doručeny Zadavateli nejpozději do skončení této lhůty, v případě jednacího řízení s uveřejněním musí být námitky proti zadávací dokumentaci doručeny Zadavateli nejpozději do skončení lhůty pro podání předběžných nabídek.Námitky proti dobrovolnému oznámení o záměru uzavřít smlouvu podle § 212 odst. 2 zákona musí být doručeny Zadavateli do 30 dnů od uveřejnění tohoto oznámení.Zadavatel je povinen námitky vyřídit do 15 dnů. Návrh je nutné doručit ÚOHS i Zadavateli do 10 dnů ode dne, v němž stěžovatel obdržel rozhodnutí, kterým Zadavatel námitky odmítl nebo do 25 dnů od odeslání námitek, pokud Zadavatel o námitkách nerozhodl.Po uzavření smlouvy na veřejnou zakázku či rámcové dohody lze podat pouze návrh na uložení zákazu plnění smlouvy, a to i bez předchozího podání námitek. Návrh na uložení zákazu plnění smlouvy doručí navrhovatel ÚOHS a ve stejnopisu Zadavateli do 1 měsíce ode dne, kdy Zadavatel uveřejnil oznámení o uzavření smlouvy způsobem podle § 212 odst. 2 zákona s uvedením důvodu pro zadání veřejné zakázky bez uveřejnění oznámení o zahájení zadávacího řízení, předběžného oznámení nebo výzvy k podání nabídek ve zjednodušeném podlimitním řízení, nejpozději však do 6 měsíců od uzavření této smlouvy. Návrh na uložení zákazu plnění smlouvy podle § 254 odstavce 1 písm. d) zákona doručí navrhovatel ÚOHS a ve stejnopisu Zadavateli do 1 měsíce ode dne, kdy Zadavatel uveřejnil oznámení o uzavření smlouvy na základě rámcové dohody podle § 137 zákona nebo oznámení o uzavření smlouvy v dynamickém nákupním systému podle § 142 zákona, nejpozději však do 6 měsíců od uzavření této smlouvy.Ve lhůtě pro doručení návrhu je navrhovatel povinen složit na účet ÚOHS kauci ve výši 1 % z nabídkové ceny navrhovatele za celou dobu plnění veřejné zakázky nebo za dobu prvních čtyř let plnění v případě smluv na dobu neurčitou, nejméně však ve výši 50 000 českých korun (CZK), nejvýše ve výši 10 000 000 CZK. V případě, že navrhovatel nemůže stanovit celkovou nabídkovou cenu, je povinen složit kauci ve výši 100 000 CZK. V případě návrhu na uložení zákazu plnění smlouvy je navrhovatel povinen složit kauci ve výši 200 000 CZK. Jde-li o řízení o přezkoumání postupu pro zadávání koncesí, je navrhovatel povinen ve lhůtě pro doručení návrhu složit na účet ÚOHS kauci ve výši 1 % z předpokládané hodnoty koncese uveřejněné ve Věstníku veřejných zakázek nebo na profilu Zadavatele, nejméně však ve výši 50 000 CZK, nejvýše ve výši 10 000 000 CZK. V případě, že Zadavatel neuveřejní ve Věstníku veřejných zakázek nebo na profilu Zadavatele předpokládanou hodnotu koncese, je navrhovatel povinen složit kauci ve výši 100 000 CZK. V případě návrhu na uložení zákazu plnění koncesní smlouvy je navrhovatel povinen složit kauci ve výši 200 000 CZK." . + +epd:id_2021-S-004-003545_ReviewerContactPoint_bdZjimbzCaRXbeYeBmF94j a cccev:ContactPoint; + epo:hasFax "+420 542167112"; + epo:hasInternetAddress "https://www.uohs.cz/"^^xsd:anyURI; + cccev:email "posta@uohs.cz"; + cccev:telephone "+420 542167111" . + +epd:id_2021-S-004-003545_ReviewerOrganisationAddress_bdZjimbzCaRXbeYeBmF94j a locn:Address; + epo:hasCountryCode ; + locn:postCode "604 55"; + locn:postName "Brno"; + locn:thoroughfare "tř. Kpt. Jaroše 7" . + +epd:id_2021-S-004-003545_ReviewerOrganisation_bdZjimbzCaRXbeYeBmF94j a org:Organization; + epo:hasLegalName "Úřad pro ochranu hospodářské soutěže"@cs; + epo:hasPrimaryContactPoint epd:id_2021-S-004-003545_ReviewerContactPoint_bdZjimbzCaRXbeYeBmF94j; + cccev:registeredAddress epd:id_2021-S-004-003545_ReviewerOrganisationAddress_bdZjimbzCaRXbeYeBmF94j . + +epd:id_2021-S-004-003545_Reviewer_bdZjimbzCaRXbeYeBmF94j a epo:Reviewer; + epo:playedBy epd:id_2021-S-004-003545_ReviewerOrganisation_bdZjimbzCaRXbeYeBmF94j . + + . + + + . + + + . + diff --git a/tests/test_data/notice_packager/templates/2021_S_004_003545_0.tmd.rdf b/tests/test_data/notice_packager/templates/2021_S_004_003545_0.tmd.rdf new file mode 100644 index 000000000..598c47f04 --- /dev/null +++ b/tests/test_data/notice_packager/templates/2021_S_004_003545_0.tmd.rdf @@ -0,0 +1,22 @@ + + +%cellarEntities; +]> + + + 2021_S_004_003545_0.notice.rdf + + + + + rdf_epo + + + + + Construction work + 1 + + \ No newline at end of file diff --git a/tests/test_data/notice_packager/templates/2021_S_004_003545_create.mets.xml b/tests/test_data/notice_packager/templates/2021_S_004_003545_create.mets.xml new file mode 100644 index 000000000..fb8090fec --- /dev/null +++ b/tests/test_data/notice_packager/templates/2021_S_004_003545_create.mets.xml @@ -0,0 +1,40 @@ + + + + 2021_S_004_003545_create + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+ + + + + +
\ No newline at end of file diff --git a/tests/test_data/notice_packager/templates/2021_S_004_003545_update.mets.xml b/tests/test_data/notice_packager/templates/2021_S_004_003545_update.mets.xml new file mode 100644 index 000000000..77e182c88 --- /dev/null +++ b/tests/test_data/notice_packager/templates/2021_S_004_003545_update.mets.xml @@ -0,0 +1,40 @@ + + + + 2021_S_004_003545_update + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+ + + + + +
\ No newline at end of file diff --git a/tests/test_data/notice_packager/templates/techMDID001.tmd.rdf b/tests/test_data/notice_packager/templates/techMDID001.tmd.rdf deleted file mode 100644 index ed8508356..000000000 --- a/tests/test_data/notice_packager/templates/techMDID001.tmd.rdf +++ /dev/null @@ -1,22 +0,0 @@ - - - %cellarEntities; - ]> - - - 196390_2016.rdf - - - - - E_PROCUREMENT_ONTOLOGY - - - - - eProcurement notice 196390_2016 - 1 - - diff --git a/tests/unit/notice_packager/conftest.py b/tests/unit/notice_packager/conftest.py index c74a450bd..124e6efa4 100644 --- a/tests/unit/notice_packager/conftest.py +++ b/tests/unit/notice_packager/conftest.py @@ -68,7 +68,7 @@ def notice_sample_metadata(notice_2018) -> ExtractedMetadata: @pytest.fixture def rdf_content() -> str: - return (TEST_DATA_PATH / "notice_packager" / "templates" / "196390_2016.rdf").read_text() + return (TEST_DATA_PATH / "notice_packager" / "templates" / "2021_S_004_003545_0.notice.rdf").read_text() @pytest.fixture diff --git a/tests/unit/notice_packager/test_metadata_transformer.py b/tests/unit/notice_packager/test_metadata_transformer.py index 68e30aba4..1a4320b8b 100644 --- a/tests/unit/notice_packager/test_metadata_transformer.py +++ b/tests/unit/notice_packager/test_metadata_transformer.py @@ -47,5 +47,5 @@ def test_publication_notice_uri(notice_id, notice_sample_metadata): def test_publication_work_identifier(notice_id, notice_sample_metadata): work_id = publication_work_identifier(notice_id, notice_sample_metadata) - assert work_id == "2018_S_22_196390" + assert work_id == "2018_S_022_196390" diff --git a/tests/unit/notice_packager/test_template_generator.py b/tests/unit/notice_packager/test_template_generator.py index e48a4b5f9..f4a3c2b84 100644 --- a/tests/unit/notice_packager/test_template_generator.py +++ b/tests/unit/notice_packager/test_template_generator.py @@ -6,7 +6,7 @@ # Email: kalean.bl@gmail.com """ """ - +import difflib import re import pytest @@ -16,7 +16,7 @@ def __sanitize(s): - return re.sub(r"[\n\t\s]*", "", s) + return re.sub(r"[\n\t\s]+", "", s) def __test_template_generator(template): @@ -31,28 +31,30 @@ def __test(template_generate, data, test_tpl): def test_mets_xml_dmd_rdf_generator(template_sample_metadata): - test_template = "196390_2016-0.mets.xml.dmd.rdf" + test_template = "2021_S_004_003545_0.mets.xml.dmd.rdf" __test(TemplateGenerator.mets_xml_dmd_rdf_generator, template_sample_metadata, test_template) def test_tmd_rdf_generator(template_sample_metadata): - test_template = "techMDID001.tmd.rdf" + test_template = "2021_S_004_003545_0.tmd.rdf" __test(TemplateGenerator.tmd_rdf_generator, template_sample_metadata, test_template) def test_mets2create_mets_xml_generator(template_sample_metadata): - template_sample_metadata.notice.action.type = "create" - test_template = "196390_2016_mets2create.mets.xml" + template_sample_metadata.mets.type = "create" + template_sample_metadata.mets.document_id = f"{template_sample_metadata.work.identifier}_{template_sample_metadata.mets.type}" + test_template = "2021_S_004_003545_create.mets.xml" __test(TemplateGenerator.mets2action_mets_xml_generator, template_sample_metadata, test_template) def test_mets2update_mets_xml_generator(template_sample_metadata): - template_sample_metadata.notice.action.type = "update" - test_template = "196390_2016_mets2update.mets.xml" + template_sample_metadata.mets.type = "update" + template_sample_metadata.mets.document_id = f"{template_sample_metadata.work.identifier}_{template_sample_metadata.mets.type}" + test_template = "2021_S_004_003545_update.mets.xml" __test(TemplateGenerator.mets2action_mets_xml_generator, template_sample_metadata, test_template) def test_mets2action_mets_xml_generator_with_wrong_action(template_sample_metadata): - template_sample_metadata.notice.action.type = "wrong_action" + template_sample_metadata.mets.type = "wrong_action" with pytest.raises(ValueError): TemplateGenerator.mets2action_mets_xml_generator(template_sample_metadata)