Skip to content

Commit

Permalink
Merge tag '4.2.3' into 52n-4.2.x
Browse files Browse the repository at this point in the history
  • Loading branch information
ridoo committed Apr 3, 2024
2 parents 2f0f190 + d5d7b6e commit 044959f
Show file tree
Hide file tree
Showing 20 changed files with 247 additions and 366 deletions.
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
- checkout
- setup_remote_docker:
docker_layer_caching: false
version: 20.10.12
version: docker24

- run:
name: Build the stack
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/52n-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
uses: docker/metadata-action@v4
env:
MAJOR_VERSION: ${{ steps.semver_parser.outputs.major }}
MAJOR_MINOR_VERSION: ${{ steps.semver_parser.outputs.major }}-${{ steps.semver_parser.outputs.minor }}
MAJOR_MINOR_VERSION: ${{ steps.semver_parser.outputs.major }}.${{ steps.semver_parser.outputs.minor }}
MAJOR_MINOR_PATCH_VERSION: ${{ steps.semver_parser.outputs.fullversion }}
with:
images: ${{ env.IMAGE }}
Expand Down
4 changes: 2 additions & 2 deletions docker-compose-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ services:

# Geoserver backend
geoserver:
image: geonode/geoserver:2.23.3-v2
image: geonode/geoserver:2.24.2-v1
container_name: geoserver4${COMPOSE_PROJECT_NAME}
healthcheck:
test: "curl -m 10 --fail --silent --write-out 'HTTP CODE : %{http_code}\n' --output /dev/null http://geoserver:8080/geoserver/ows"
Expand All @@ -105,7 +105,7 @@ services:
condition: service_healthy

data-dir-conf:
image: geonode/geoserver_data:2.23.3-v1
image: geonode/geoserver_data:2.24.2-v1
container_name: gsconf4${COMPOSE_PROJECT_NAME}
entrypoint: sleep infinity
volumes:
Expand Down
4 changes: 2 additions & 2 deletions docker-compose-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ services:

# Geoserver backend
geoserver:
image: geonode/geoserver:2.23.3-v2
image: geonode/geoserver:2.24.2-v1
container_name: geoserver4${COMPOSE_PROJECT_NAME}
healthcheck:
test: "curl -m 10 --fail --silent --write-out 'HTTP CODE : %{http_code}\n' --output /dev/null http://geoserver:8080/geoserver/ows"
Expand All @@ -118,7 +118,7 @@ services:
condition: service_healthy

data-dir-conf:
image: geonode/geoserver_data:2.23.3-v1
image: geonode/geoserver_data:2.24.2-v1
container_name: gsconf4${COMPOSE_PROJECT_NAME}
entrypoint: sleep infinity
volumes:
Expand Down
9 changes: 3 additions & 6 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ version: '3.9'
# Common Django template for GeoNode and Celery services below
x-common-django:
&default-common-django
image: 52north/geonode:4.2.x
image: 52north/geonode:4.2.3
restart: unless-stopped
env_file:
- .env
Expand All @@ -22,9 +22,6 @@ services:
# Our custom django application. It includes Geonode.
django:
<< : *default-common-django
build:
context: ./
dockerfile: Dockerfile
container_name: django4${COMPOSE_PROJECT_NAME}
healthcheck:
test: "curl -m 10 --fail --silent --write-out 'HTTP CODE : %{http_code}\n' --output /dev/null http://django:8000/"
Expand Down Expand Up @@ -91,7 +88,7 @@ services:

# Geoserver backend
geoserver:
image: geonode/geoserver:2.23.3-v2
image: geonode/geoserver:2.24.2-v1
container_name: geoserver4${COMPOSE_PROJECT_NAME}
healthcheck:
test: "curl -m 10 --fail --silent --write-out 'HTTP CODE : %{http_code}\n' --output /dev/null http://geoserver:8080/geoserver/ows"
Expand All @@ -117,7 +114,7 @@ services:
condition: service_healthy

data-dir-conf:
image: geonode/geoserver_data:2.23.3-v1
image: geonode/geoserver_data:2.24.2-v1
container_name: gsconf4${COMPOSE_PROJECT_NAME}
entrypoint: sleep infinity
volumes:
Expand Down
2 changes: 1 addition & 1 deletion geonode/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import os

__version__ = (4, 2, 0, "dev", 0)
__version__ = (4, 2, 3, "final", 0)


default_app_config = "geonode.apps.AppConfig"
Expand Down
124 changes: 85 additions & 39 deletions geonode/base/api/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -1951,10 +1951,10 @@ def test_set_resource_thumbnail(self):
self.assertEqual(response.json(), "The url must be of an image with format (png, jpeg or jpg)")

# using Base64 data as an ASCII byte string
data[
"file"
] = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABHNCSVQICAgI\
data["file"] = (
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABHNCSVQICAgI\
fAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAANSURBVAiZYzAxMfkPAALYAZzx61+bAAAAAElFTkSuQmCC"
)
with patch("geonode.base.models.is_monochromatic_image") as _mck:
_mck.return_value = False
response = self.client.put(url, data=data, format="json")
Expand Down Expand Up @@ -2623,15 +2623,6 @@ def test_linked_resource_for_document(self):
# validation
self.assertEqual(response.status_code, 200)
payload = response.json()
self.assert_linkedres_size(payload, "resources", 2)
self.assert_linkedres_contains(
payload,
"resources",
(
{"pk": self.map.id, "title": ">>> " + self.map.title},
{"pk": self.dataset.id, "title": ">>> " + self.dataset.title},
),
)
self.assert_linkedres_size(payload, "linked_to", 2)
self.assert_linkedres_contains(
payload,
Expand All @@ -2644,7 +2635,11 @@ def test_linked_resource_for_document(self):
d.delete()

def assert_linkedres_size(self, payload, element: str, expected_size: int):
self.assertEqual(expected_size, len(payload[element]), f"Mismatching payload size of {element}")
self.assertEqual(
expected_size,
len(payload[element]),
f"Mismatching payload size of '{element}': exp:{expected_size} found:{payload[element]}",
)

def assert_linkedres_contains(self, payload, element: str, expected_elements: Iterable):
res_list = payload[element]
Expand Down Expand Up @@ -2684,15 +2679,6 @@ def test_linked_resource_for_maps_mixed(self):
self.assertEqual(response.status_code, 200)

payload = response.json()
self.assert_linkedres_size(payload, "resources", 2)
self.assert_linkedres_contains(
payload,
"resources",
(
{"pk": self.doc.id, "title": "<<< " + self.doc.title},
{"pk": self.dataset.id, "title": ">>> " + self.dataset.title},
),
)
self.assert_linkedres_size(payload, "linked_to", 1)
self.assert_linkedres_contains(
payload, "linked_to", ({"pk": self.dataset.id, "title": self.dataset.title},)
Expand All @@ -2705,6 +2691,7 @@ def test_linked_resource_for_maps_mixed(self):
d.delete()

def test_linked_resources_for_maps(self):
_m = None
try:
# data preparation
_m = MapLayer.objects.create(
Expand All @@ -2723,10 +2710,6 @@ def test_linked_resources_for_maps(self):
self.assertEqual(response.status_code, 200)

payload = response.json()
self.assert_linkedres_size(payload, "resources", 1)
self.assert_linkedres_contains(
payload, "resources", ({"pk": self.dataset.id, "title": ">>> " + self.dataset.title},)
)
self.assert_linkedres_size(payload, "linked_to", 1)
self.assert_linkedres_contains(
payload, "linked_to", ({"pk": self.dataset.id, "title": self.dataset.title},)
Expand Down Expand Up @@ -2757,10 +2740,6 @@ def test_linked_resource_for_dataset(self):
self.assertEqual(response.status_code, 200)

payload = response.json()
self.assert_linkedres_size(payload, "resources", 1)
self.assert_linkedres_contains(
payload, "resources", ({"pk": self.map.id, "title": "<<< " + self.map.title},)
)
self.assert_linkedres_size(payload, "linked_to", 0)
self.assert_linkedres_size(payload, "linked_by", 1)
self.assert_linkedres_contains(payload, "linked_by", ({"pk": self.map.id, "title": self.map.title},))
Expand Down Expand Up @@ -2791,15 +2770,6 @@ def test_linked_resource_for_datasets_mixed(self):
# validation
self.assertEqual(response.status_code, 200)
payload = response.json()
self.assert_linkedres_size(payload, "resources", 2)
self.assert_linkedres_contains(
payload,
"resources",
(
{"pk": self.doc.id, "title": "<<< " + self.doc.title},
{"pk": self.map.id, "title": "<<< " + self.map.title},
),
)
self.assert_linkedres_size(payload, "linked_to", 0)
self.assert_linkedres_size(payload, "linked_by", 2)
self.assert_linkedres_contains(
Expand Down Expand Up @@ -2848,6 +2818,82 @@ def test_linked_resource_deprecated_pagination(self):
for d in _d:
d.delete()

def test_linked_resource_filter_one_resource_type(self):
_d = []
try:
# data preparation
_d.append(LinkedResource.objects.create(source_id=self.doc.id, target_id=self.dataset.id))
_d.append(LinkedResource.objects.create(source_id=self.doc.id, target_id=self.map.id))
resource_type_param = "dataset"
# call api with single resource_type param
url = reverse("base-resources-linked_resources", args=[self.doc.id])
response = self.client.get(f"{url}?resource_type={resource_type_param}")

# validation
self.assertEqual(response.status_code, 200)
payload = response.json()

res_types_orig = resource_type_param.split(",")
res_types_payload = [res["resource_type"] for res in payload["linked_to"]]
for r in res_types_payload:
self.assertTrue(r in res_types_orig)

finally:
for d in _d:
d.delete()

def test_linked_resource_filter_multiple_resource_type_linktype(self):
_d = []
try:
# data preparation
_d.append(LinkedResource.objects.create(source_id=self.doc.id, target_id=self.dataset.id))
_d.append(LinkedResource.objects.create(source_id=self.doc.id, target_id=self.map.id))
resource_type_param = "map"
link_type = "linked_to"
# call the API w/ both parameters
url = reverse("base-resources-linked_resources", args=[self.doc.id])
response = self.client.get(f"{url}?resource_type={resource_type_param}&link_type={link_type}")

# validation
self.assertEqual(response.status_code, 200)
payload = response.json()

res_types_orig = resource_type_param.split(",")
res_types_payload = [res["resource_type"] for res in payload["linked_to"]]
for type in res_types_payload:
self.assertTrue(type in res_types_orig)
self.assertTrue({"linked_to", "WARNINGS"} == set(payload.keys()))

finally:
for d in _d:
d.delete()

def test_linked_resource_filter_multiple_resource_type_without_linktype(self):
_d = []
try:
# data preparation
_d.append(LinkedResource.objects.create(source_id=self.doc.id, target_id=self.dataset.id))
_d.append(LinkedResource.objects.create(source_id=self.doc.id, target_id=self.map.id))
resource_type_param = "dataset,map"
# call the API w/ resource_type
url = reverse("base-resources-linked_resources", args=[self.doc.id])
response = self.client.get(f"{url}?resource_type={resource_type_param}")

# validation
self.assertEqual(response.status_code, 200)
payload = response.json()

res_types_orig = resource_type_param.split(",")
res_types_payload = [res["resource_type"] for res in payload["linked_to"]]
for type in res_types_payload:
self.assertTrue(type in res_types_orig)
payload_keys = {"linked_by", "linked_to", "WARNINGS"}
self.assertTrue(payload_keys == set(payload.keys()))

finally:
for d in _d:
d.delete()


class TestApiAdditionalBBoxCalculation(GeoNodeBaseTestSupport):
@classmethod
Expand Down
Loading

0 comments on commit 044959f

Please sign in to comment.