diff --git a/geonode/documents/api/serializers.py b/geonode/documents/api/serializers.py
index 9887eced4df..679b395bc68 100644
--- a/geonode/documents/api/serializers.py
+++ b/geonode/documents/api/serializers.py
@@ -58,4 +58,5 @@ class Meta:
"executions",
"file_path",
"doc_file",
+ "metadata",
)
diff --git a/geonode/documents/templates/documents/document_metadata.html b/geonode/documents/templates/documents/document_metadata.html
index 9f27df4310b..2f4361c9be8 100644
--- a/geonode/documents/templates/documents/document_metadata.html
+++ b/geonode/documents/templates/documents/document_metadata.html
@@ -56,7 +56,7 @@
{% trans "Metadata" %} {% blocktrans with document.t
{% csrf_token %}
- {% form document_form using "layouts/doc_panels.html" %}
+ {% form document_form using panel_template %}
{# document_form|as_bootstrap #}
diff --git a/geonode/documents/templates/layouts/doc_panels.html b/geonode/documents/templates/layouts/doc_panels.html
index 3f48b433da7..0d21a1d14cd 100644
--- a/geonode/documents/templates/layouts/doc_panels.html
+++ b/geonode/documents/templates/layouts/doc_panels.html
@@ -266,6 +266,8 @@
{% trans "Optional Metadata" %}
{% endif %}
+ {% block extra_metadata_steps %}
+ {% endblock %}
{% block mandatory %}
@@ -580,6 +582,8 @@
+ {% block extra_metadata_content %}
+ {% endblock %}
{% endblock ownership %}
diff --git a/geonode/documents/views.py b/geonode/documents/views.py
index ce54fa812d0..3ba50d2f6bc 100644
--- a/geonode/documents/views.py
+++ b/geonode/documents/views.py
@@ -293,7 +293,14 @@ def form_valid(self, form):
@login_required
@check_keyword_write_perms
-def document_metadata(request, docid, template="documents/document_metadata.html", ajax=True):
+def document_metadata(
+ request,
+ docid,
+ template="documents/document_metadata.html",
+ panel_template="layouts/doc_panels.html",
+ custom_metadata=None,
+ ajax=True,
+):
document = None
try:
document = _resolve_document(request, docid, "base.change_resourcebase_metadata", _PERMISSION_MSG_METADATA)
@@ -503,6 +510,8 @@ def document_metadata(request, docid, template="documents/document_metadata.html
context={
"resource": document,
"document": document,
+ "panel_template": panel_template,
+ "custom_metadata": custom_metadata,
"document_form": document_form,
"poc_form": poc_form,
"author_form": author_form,
@@ -524,7 +533,7 @@ def document_metadata_advanced(request, docid):
return document_metadata(request, docid, template="documents/document_metadata_advanced.html")
-def document_metadata_detail(request, docid, template="documents/document_metadata_detail.html"):
+def document_metadata_detail(request, docid, template="documents/document_metadata_detail.html", custom_metadata=None):
try:
document = _resolve_document(request, docid, "view_resourcebase", _PERMISSION_MSG_METADATA)
except PermissionDenied:
@@ -542,7 +551,12 @@ def document_metadata_detail(request, docid, template="documents/document_metada
group = None
site_url = settings.SITEURL.rstrip("/") if settings.SITEURL.startswith("http") else settings.SITEURL
register_event(request, EventType.EVENT_VIEW_METADATA, document)
- return render(request, template, context={"resource": document, "group": group, "SITEURL": site_url})
+
+ return render(
+ request,
+ template,
+ context={"resource": document, "group": group, "SITEURL": site_url, "custom_metadata": custom_metadata},
+ )
@login_required
diff --git a/geonode/geoapps/api/serializers.py b/geonode/geoapps/api/serializers.py
index 86654832399..9d129dbe4db 100644
--- a/geonode/geoapps/api/serializers.py
+++ b/geonode/geoapps/api/serializers.py
@@ -37,7 +37,7 @@ class Meta:
model = GeoApp
name = "geoapp"
view_name = "geoapps-list"
- fields = ("pk", "uuid", "data", "name", "executions")
+ fields = ("pk", "uuid", "data", "name", "executions", "metadata")
def extra_update_checks(self, validated_data):
_user_profiles = {}
diff --git a/geonode/geoapps/templates/apps/app_metadata.html b/geonode/geoapps/templates/apps/app_metadata.html
index 9e92fad7720..17b2de35a97 100644
--- a/geonode/geoapps/templates/apps/app_metadata.html
+++ b/geonode/geoapps/templates/apps/app_metadata.html
@@ -55,7 +55,7 @@ {% trans "Metadata" %} {% blocktrans with geoapp.tit
{% csrf_token %}
- {% form geoapp_form using "layouts/app_panels.html" %}
+ {% form geoapp_form using panel_template %}
{# geoapp_form|as_bootstrap #}
diff --git a/geonode/geoapps/templates/layouts/app_panels.html b/geonode/geoapps/templates/layouts/app_panels.html
index f4b617bf99d..d46741d8c2e 100644
--- a/geonode/geoapps/templates/layouts/app_panels.html
+++ b/geonode/geoapps/templates/layouts/app_panels.html
@@ -256,6 +256,8 @@
{% trans "Optional Metadata" %}
+ {% block extra_metadata_steps %}
+ {% endblock %}
@@ -510,6 +512,8 @@
+ {% block extra_metadata_content %}
+ {% endblock %}
diff --git a/geonode/geoapps/views.py b/geonode/geoapps/views.py
index cae13037529..4c4879b6b75 100644
--- a/geonode/geoapps/views.py
+++ b/geonode/geoapps/views.py
@@ -154,7 +154,7 @@ def geoapp_edit(request, geoappid, template="apps/app_edit.html"):
return render(request, template, context=_ctx)
-def geoapp_metadata_detail(request, geoappid, template="apps/app_metadata_detail.html"):
+def geoapp_metadata_detail(request, geoappid, template="apps/app_metadata_detail.html", custom_metadata=None):
try:
geoapp_obj = _resolve_geoapp(request, geoappid, "view_resourcebase", _PERMISSION_MSG_METADATA)
except PermissionDenied:
@@ -172,12 +172,29 @@ def geoapp_metadata_detail(request, geoappid, template="apps/app_metadata_detail
group = None
site_url = settings.SITEURL.rstrip("/") if settings.SITEURL.startswith("http") else settings.SITEURL
register_event(request, EventType.EVENT_VIEW_METADATA, geoapp_obj)
- return render(request, template, context={"resource": geoapp_obj, "group": group, "SITEURL": site_url})
+
+ return render(
+ request,
+ template,
+ context={
+ "resource": geoapp_obj,
+ "group": group,
+ "SITEURL": site_url,
+ "custom_metadata": custom_metadata,
+ },
+ )
@login_required
@check_keyword_write_perms
-def geoapp_metadata(request, geoappid, template="apps/app_metadata.html", ajax=True):
+def geoapp_metadata(
+ request,
+ geoappid,
+ template="apps/app_metadata.html",
+ ajax=True,
+ panel_template="layouts/app_panels.html",
+ custom_metadata=None,
+):
geoapp_obj = None
try:
geoapp_obj = _resolve_geoapp(request, geoappid, "base.change_resourcebase_metadata", _PERMISSION_MSG_METADATA)
@@ -394,6 +411,8 @@ def geoapp_metadata(request, geoappid, template="apps/app_metadata.html", ajax=T
context={
"resource": geoapp_obj,
"geoapp": geoapp_obj,
+ "panel_template": panel_template,
+ "custom_metadata": custom_metadata,
"geoapp_form": geoapp_form,
"poc_form": poc_form,
"author_form": author_form,
diff --git a/geonode/layers/api/serializers.py b/geonode/layers/api/serializers.py
index 2f3d9a63b8e..4f974cf29a7 100644
--- a/geonode/layers/api/serializers.py
+++ b/geonode/layers/api/serializers.py
@@ -178,6 +178,7 @@ class Meta:
"styles",
"attribute_set",
"executions",
+ "metadata",
)
name = serializers.CharField(read_only=True)
diff --git a/geonode/layers/templates/datasets/dataset_metadata.html b/geonode/layers/templates/datasets/dataset_metadata.html
index 9a1fb5aaaee..cfb423709ac 100644
--- a/geonode/layers/templates/datasets/dataset_metadata.html
+++ b/geonode/layers/templates/datasets/dataset_metadata.html
@@ -78,7 +78,7 @@
{% trans "Metadata" %} {% blocktrans with dataset.ti
{% csrf_token %}
- {% form dataset_form using "layouts/panels.html" %}
+ {% form dataset_form using panel_template %}
{# dataset_form|as_bootstrap #}
diff --git a/geonode/layers/templates/layouts/panels.html b/geonode/layers/templates/layouts/panels.html
index 435804aac75..c10634646f3 100644
--- a/geonode/layers/templates/layouts/panels.html
+++ b/geonode/layers/templates/layouts/panels.html
@@ -280,6 +280,8 @@
{% trans "Dataset Attributes" %}
+ {% block extra_metadata_steps%}
+ {% endblock %}
{% endblock breadcrumbs %}
{% block mandatory %}
@@ -644,6 +646,8 @@
{% endblock %}
+ {% block extra_metadata_content %}
+ {% endblock %}
diff --git a/geonode/layers/views.py b/geonode/layers/views.py
index 6a3d6f774bb..b8c68021df2 100644
--- a/geonode/layers/views.py
+++ b/geonode/layers/views.py
@@ -331,7 +331,14 @@ def dataset_feature_catalogue(request, layername, template="../../catalogue/temp
@login_required
@check_keyword_write_perms
-def dataset_metadata(request, layername, template="datasets/dataset_metadata.html", ajax=True):
+def dataset_metadata(
+ request,
+ layername,
+ template="datasets/dataset_metadata.html",
+ panel_template="layouts/panels.html",
+ custom_metadata=None,
+ ajax=True,
+):
try:
layer = _resolve_dataset(request, layername, "base.change_resourcebase_metadata", _PERMISSION_MSG_METADATA)
except PermissionDenied as e:
@@ -686,6 +693,8 @@ def dataset_metadata(request, layername, template="datasets/dataset_metadata.htm
context={
"resource": layer,
"dataset": layer,
+ "panel_template": panel_template,
+ "custom_metadata": custom_metadata,
"dataset_form": dataset_form,
"poc_form": poc_form,
"author_form": author_form,
@@ -942,7 +951,7 @@ def decimal_default(obj):
)
-def dataset_metadata_detail(request, layername, template="datasets/dataset_metadata_detail.html"):
+def dataset_metadata_detail(request, layername, template="datasets/dataset_metadata_detail.html", custom_metadata=None):
try:
layer = _resolve_dataset(request, layername, "view_resourcebase", _PERMISSION_MSG_METADATA)
except PermissionDenied:
@@ -964,7 +973,15 @@ def dataset_metadata_detail(request, layername, template="datasets/dataset_metad
perms_list = list(layer.get_self_resource().get_user_perms(request.user).union(layer.get_user_perms(request.user)))
return render(
- request, template, context={"resource": layer, "perms_list": perms_list, "group": group, "SITEURL": site_url}
+ request,
+ template,
+ context={
+ "resource": layer,
+ "perms_list": perms_list,
+ "group": group,
+ "SITEURL": site_url,
+ "custom_metadata": custom_metadata,
+ },
)
diff --git a/geonode/maps/api/serializers.py b/geonode/maps/api/serializers.py
index 5a1cba0fdfe..2d9c88330e3 100644
--- a/geonode/maps/api/serializers.py
+++ b/geonode/maps/api/serializers.py
@@ -160,7 +160,7 @@ class Meta:
model = Map
name = "map"
view_name = "maps-list"
- fields = ("pk", "uuid", "urlsuffix", "featuredurl", "data", "maplayers", "executions")
+ fields = ("pk", "uuid", "urlsuffix", "featuredurl", "data", "maplayers", "executions", "metadata")
class SimpleMapSerializer(BaseDynamicModelSerializer):
diff --git a/geonode/maps/templates/layouts/map_panels.html b/geonode/maps/templates/layouts/map_panels.html
index 4ce88a199d8..307549913da 100644
--- a/geonode/maps/templates/layouts/map_panels.html
+++ b/geonode/maps/templates/layouts/map_panels.html
@@ -269,6 +269,8 @@
{% trans "Optional Metadata" %}
{% endif %}
+ {% block extra_metadata_steps %}
+ {% endblock %}
@@ -568,6 +570,8 @@
+ {% block extra_metadata_content %}
+ {% endblock %}
diff --git a/geonode/maps/templates/maps/map_metadata.html b/geonode/maps/templates/maps/map_metadata.html
index 2a3969e5c2a..dcc99f734e7 100644
--- a/geonode/maps/templates/maps/map_metadata.html
+++ b/geonode/maps/templates/maps/map_metadata.html
@@ -57,7 +57,7 @@
{% trans "Metadata" %} {% blocktrans with map.title
{% csrf_token %}
- {% form map_form using "layouts/map_panels.html" %}
+ {% form map_form using panel_template %}
{# map_form|as_bootstrap #}
diff --git a/geonode/maps/views.py b/geonode/maps/views.py
index f281c3369e3..ea9450f419c 100644
--- a/geonode/maps/views.py
+++ b/geonode/maps/views.py
@@ -77,7 +77,14 @@ def _resolve_map(request, id, permission="base.change_resourcebase", msg=_PERMIS
@login_required
@check_keyword_write_perms
-def map_metadata(request, mapid, template="maps/map_metadata.html", ajax=True):
+def map_metadata(
+ request,
+ mapid,
+ template="maps/map_metadata.html",
+ ajax=True,
+ panel_template="layouts/map_panels.html",
+ custom_metadata=None,
+):
try:
map_obj = _resolve_map(request, mapid, "base.change_resourcebase_metadata", _PERMISSION_MSG_VIEW)
except PermissionDenied:
@@ -285,6 +292,8 @@ def map_metadata(request, mapid, template="maps/map_metadata.html", ajax=True):
"resource": map_obj,
"map": map_obj,
"config": json.dumps(map_obj.blob),
+ "panel_template": panel_template,
+ "custom_metadata": custom_metadata,
"map_form": map_form,
"poc_form": poc_form,
"author_form": author_form,
@@ -554,7 +563,7 @@ def ajax_url_lookup(request):
return HttpResponse(content=json.dumps(json_dict), content_type="text/plain")
-def map_metadata_detail(request, mapid, template="maps/map_metadata_detail.html"):
+def map_metadata_detail(request, mapid, template="maps/map_metadata_detail.html", custom_metadata=None):
try:
map_obj = _resolve_map(request, mapid, "view_resourcebase")
except PermissionDenied:
@@ -572,7 +581,12 @@ def map_metadata_detail(request, mapid, template="maps/map_metadata_detail.html"
group = None
site_url = settings.SITEURL.rstrip("/") if settings.SITEURL.startswith("http") else settings.SITEURL
register_event(request, EventType.EVENT_VIEW_METADATA, map_obj)
- return render(request, template, context={"resource": map_obj, "group": group, "SITEURL": site_url})
+
+ return render(
+ request,
+ template,
+ context={"resource": map_obj, "group": group, "SITEURL": site_url, "custom_metadata": custom_metadata},
+ )
@login_required
diff --git a/geonode/templates/metadata_detail.html b/geonode/templates/metadata_detail.html
index 42cbfe2d6d5..c04a19e39db 100644
--- a/geonode/templates/metadata_detail.html
+++ b/geonode/templates/metadata_detail.html
@@ -348,6 +348,9 @@ {% trans "Metadata" %} : {{ resource.title }}
{% endif %}
{% endblock supplemental_information %}
+ {% block extra_metadata %}
+ {% endblock extra_metadata %}
+
{% block spatial_representation_type %}
{% if resource.spatial_representation_type %}
{% trans "Spatial Representation Type" %}