From 9ef1544cf33d058a7384669caffc8737d958e29d Mon Sep 17 00:00:00 2001 From: Mattia Giupponi Date: Tue, 9 Aug 2022 12:28:54 +0200 Subject: [PATCH] [Fixes #9821] add new attribute to time series --- geonode/layers/forms.py | 3 +-- geonode/layers/tests.py | 48 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/geonode/layers/forms.py b/geonode/layers/forms.py index 355b6e7f0be..89a72cd5193 100644 --- a/geonode/layers/forms.py +++ b/geonode/layers/forms.py @@ -293,9 +293,8 @@ def __init__(self, *args, **kwargs): class Meta: model = Attribute - fields = ('dataset', 'attribute') + fields = ('attribute',) - dataset = forms.CharField(required=False) attribute = forms.ChoiceField( required=False, ) diff --git a/geonode/layers/tests.py b/geonode/layers/tests.py index 1d3b87406fc..293e9f662cb 100644 --- a/geonode/layers/tests.py +++ b/geonode/layers/tests.py @@ -60,7 +60,7 @@ from geonode.resource.manager import resource_manager from geonode.tests.utils import NotificationsTestsHelper from geonode.layers.models import Dataset, Style, Attribute -from geonode.layers.forms import DatasetForm, JSONField, LayerUploadForm +from geonode.layers.forms import DatasetForm, DatasetTimeSerieForm, JSONField, LayerUploadForm from geonode.layers.populate_datasets_data import create_dataset_data from geonode.base.models import TopicCategory, License, Region, Link from geonode.utils import check_ogc_backend, set_resource_default_links @@ -1861,6 +1861,7 @@ def setUp(self) -> None: self.user = get_user_model().objects.get(username='admin') self.dataset = create_single_dataset("my_single_layer", owner=self.user) self.sut = DatasetForm + self.time_form = DatasetTimeSerieForm def test_resource_form_is_invalid_extra_metadata_not_json_format(self): self.client.login(username="admin", password="admin") @@ -1915,3 +1916,48 @@ def test_resource_form_is_valid_extra_metadata(self): "extra_metadata": '[{"id": 1, "filter_header": "object", "field_name": "object", "field_label": "object", "field_value": "object"}]' }) self.assertTrue(form.is_valid()) + + def test_dataset_time_form_should_work(self): + + attr, _ = Attribute.objects.get_or_create( + dataset=self.dataset, + attribute="field_date", + attribute_type="xsd:dateTime" + ) + self.dataset.attribute_set.add(attr) + self.dataset.save() + form = self.time_form( + instance=self.dataset, + data={ + 'attribute': self.dataset.attributes.first().id, + 'end_attribute': '', + 'presentation': 'DISCRETE_INTERVAL', + 'precision_value': 12345, + 'precision_step': 'seconds' + } + ) + self.assertTrue(form.is_valid()) + self.assertDictEqual({}, form.errors) + + def test_dataset_time_form_should_raise_error_if_invalid_payload(self): + + attr, _ = Attribute.objects.get_or_create( + dataset=self.dataset, + attribute="field_date", + attribute_type="xsd:dateTime" + ) + self.dataset.attribute_set.add(attr) + self.dataset.save() + form = self.time_form( + instance=self.dataset, + data={ + 'attribute': self.dataset.attributes.first().id, + 'end_attribute': '', + 'presentation': 'INVALID_PRESENTATION_VALUE', + 'precision_value': 12345, + 'precision_step': 'seconds' + } + ) + self.assertFalse(form.is_valid()) + self.assertTrue('presentation' in form.errors) + self.assertEqual("Select a valid choice. INVALID_PRESENTATION_VALUE is not one of the available choices.", form.errors['presentation'][0])