From 3fd48bae83cf41d34bb75254d292c5b2e44dee9f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 24 Nov 2020 19:08:58 +0100 Subject: [PATCH] [Fixes #6665] Improve WYSIWYG metadata editor to store formatted and plain texts (#6666) (#6668) Co-authored-by: Alessio Fabiani --- geonode/base/models.py | 24 ++++++++++++++++ geonode/base/tests.py | 28 +++++++++++++++++-- .../templates/catalogue/full_metadata.xml | 12 ++++---- 3 files changed, 56 insertions(+), 8 deletions(-) diff --git a/geonode/base/models.py b/geonode/base/models.py index f3062b45e33..b8d7be7fa20 100644 --- a/geonode/base/models.py +++ b/geonode/base/models.py @@ -885,6 +885,30 @@ def __init__(self, *args, **kwargs): def __str__(self): return "{0}".format(self.title) + def _remove_html_tags(self, attribute_str): + pattern = re.compile('<.*?>') + return re.sub(pattern, '', attribute_str) + + @property + def raw_abstract(self): + return self._remove_html_tags(self.abstract) + + @property + def raw_purpose(self): + return self._remove_html_tags(self.purpose) + + @property + def raw_constraints_other(self): + return self._remove_html_tags(self.constraints_other) + + @property + def raw_supplemental_information(self): + return self._remove_html_tags(self.supplemental_information) + + @property + def raw_data_quality_statement(self): + return self._remove_html_tags(self.data_quality_statement) + def save(self, notify=False, *args, **kwargs): """ Send a notification when a resource is created or updated diff --git a/geonode/base/tests.py b/geonode/base/tests.py index 78cd0c17e4e..143382383f0 100644 --- a/geonode/base/tests.py +++ b/geonode/base/tests.py @@ -37,7 +37,7 @@ ) from django.template import Template, Context from django.contrib.auth import get_user_model -from django.test import Client, TestCase, override_settings +from django.test import Client, TestCase, override_settings, SimpleTestCase from django.shortcuts import reverse from geonode.base.middleware import ReadOnlyMiddleware, MaintenanceMiddleware @@ -50,7 +50,6 @@ from django.core.management import call_command from django.core.management.base import CommandError - test_image = Image.new('RGBA', size=(50, 50), color=(155, 0, 0)) @@ -805,3 +804,28 @@ def test_category_data_shown_for_with_resourcebase_permissions(self): assign_perm('view_resourcebase', self.user, self.rb) categories = get_visibile_resources(self.user) self.assertEqual(categories['iso_formats'].count(), 1) + + +class TestHtmlTagRemoval(SimpleTestCase): + + def test_not_tags_in_attribute(self): + attribute_target_value = "This is not a templated text" + r = ResourceBase() + filtered_value = r._remove_html_tags(attribute_target_value) + self.assertEqual(attribute_target_value, filtered_value) + + def test_simple_tags_in_attribute(self): + tagged_value = "

This is not a templated text

" + attribute_target_value = "This is not a templated text" + r = ResourceBase() + filtered_value = r._remove_html_tags(tagged_value) + self.assertEqual(filtered_value, attribute_target_value) + + def test_complex_tags_in_attribute(self): + tagged_value = """

+

Something in container
""" + attribute_target_value = """This is not a templated text + Something in container""" + r = ResourceBase() + filtered_value = r._remove_html_tags(tagged_value) + self.assertEqual(filtered_value, attribute_target_value) diff --git a/geonode/catalogue/templates/catalogue/full_metadata.xml b/geonode/catalogue/templates/catalogue/full_metadata.xml index 99bd4afee79..44f5db385fb 100644 --- a/geonode/catalogue/templates/catalogue/full_metadata.xml +++ b/geonode/catalogue/templates/catalogue/full_metadata.xml @@ -222,10 +222,10 @@ - {{layer.abstract}} + {{layer.raw_abstract}} - - {% if layer.purpose %}{{layer.purpose}}{% endif %} + + {% if layer.raw_purpose %}{{layer.raw_purpose}}{% endif %} completed @@ -398,7 +398,7 @@ {{layer.restriction_code_type.identifier}} - {{layer.constraints_other}} + {{layer.raw_constraints_other}} @@ -453,7 +453,7 @@ {% endif %} - {{ layer.supplemental_information }} + {{ layer.raw_supplemental_information }} @@ -543,7 +543,7 @@ - {% else %}>{{layer.data_quality_statement}}{% endif %} + {% else %}>{{layer.raw_data_quality_statement}}{% endif %}