Skip to content

Commit

Permalink
[Fixes #9821] add new attribute to time series
Browse files Browse the repository at this point in the history
  • Loading branch information
mattiagiupponi committed Aug 9, 2022
1 parent e6149da commit 9ef1544
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 3 deletions.
3 changes: 1 addition & 2 deletions geonode/layers/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
)
Expand Down
48 changes: 47 additions & 1 deletion geonode/layers/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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")
Expand Down Expand Up @@ -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])

0 comments on commit 9ef1544

Please sign in to comment.