From d81883f223b708c8ea843016667c748b9c66a6e6 Mon Sep 17 00:00:00 2001 From: Thibaud Dauce Date: Thu, 15 Feb 2024 16:02:04 +0100 Subject: [PATCH 1/2] Test temporal coverage with only start date --- udata/core/dataset/api_fields.py | 6 ++---- udata/tests/api/test_datasets_api.py | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/udata/core/dataset/api_fields.py b/udata/core/dataset/api_fields.py index f568c17f2d..32ed347bb5 100644 --- a/udata/core/dataset/api_fields.py +++ b/udata/core/dataset/api_fields.py @@ -133,10 +133,8 @@ resources_order = api.as_list(fields.String(description='Resource ID')) temporal_coverage_fields = api.model('TemporalCoverage', { - 'start': fields.ISODateTime(description='The temporal coverage start date', - required=True), - 'end': fields.ISODateTime(description='The temporal coverage end date', - required=True), + 'start': fields.ISODateTime(description='The temporal coverage start date', required=True), + 'end': fields.ISODateTime(description='The temporal coverage end date'), }) dataset_ref_fields = api.inherit('DatasetReference', base_reference, { diff --git a/udata/tests/api/test_datasets_api.py b/udata/tests/api/test_datasets_api.py index 9f4ef92b64..2da6346977 100644 --- a/udata/tests/api/test_datasets_api.py +++ b/udata/tests/api/test_datasets_api.py @@ -588,6 +588,32 @@ def test_dataset_api_update_deleted(self): self.assertEqual(Dataset.objects.first().description, dataset.description) + + def test_update_temporal_coverage(self): + user = self.login() + dataset = DatasetFactory(owner=user) + data = dataset.to_dict() + data['temporal_coverage'] = { + 'start': '2024-01-01', + 'end': '2024-01-31', + } + response = self.put(url_for('api.dataset', dataset=dataset), data) + self.assert200(response) + + dataset.reload() + self.assertEqual('2024-01-01', str(dataset.temporal_coverage.start)) + self.assertEqual('2024-01-31', str(dataset.temporal_coverage.end)) + + data = dataset.to_dict() + data['temporal_coverage'] = { 'start': '2024-01-01', 'end': None } + response = self.put(url_for('api.dataset', dataset=dataset), data) + self.assert200(response) + + dataset.reload() + self.assertEqual('2024-01-01', str(dataset.temporal_coverage.start)) + self.assertIsNone(dataset.temporal_coverage.end) + + def test_dataset_api_update_contact_point(self): '''It should update a dataset from the API''' self.login() From 923119ec3889d8e97ba16957878de1865bde5b50 Mon Sep 17 00:00:00 2001 From: Thibaud Dauce Date: Thu, 16 May 2024 16:00:15 +0200 Subject: [PATCH 2/2] fix tests --- udata/forms/fields.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/udata/forms/fields.py b/udata/forms/fields.py index 600c908a64..fc3665230f 100644 --- a/udata/forms/fields.py +++ b/udata/forms/fields.py @@ -695,14 +695,22 @@ def process_formdata(self, valuelist): value = valuelist[0] if isinstance(value, str): start, end = value.split(' - ') + if end is not None: + end = parse(end, yearfirst=True).date() + self.data = db.DateRange( start=parse(start, yearfirst=True).date(), - end=parse(end, yearfirst=True).date(), + end=end, ) - elif 'start' in value and 'end' in value: + elif 'start' in value: + if value.get('end', None): + end = parse(value['end'], yearfirst=True).date() + else: + end = None + self.data = db.DateRange( start=parse(value['start'], yearfirst=True).date(), - end=parse(value['end'], yearfirst=True).date(), + end=end, ) else: raise validators.ValidationError(