From aca092c3af7b4749b8333035ead065f94f5aa309 Mon Sep 17 00:00:00 2001 From: SpliiT Date: Tue, 10 Jun 2025 15:30:42 +0200 Subject: [PATCH 1/3] fix(schemas): Fix Edges & Points schemas --- pyproject.toml | 2 + .../rpc/model/edges/edges_protocols.py | 27 +++++++++++++ .../schemas/visibility.json} | 2 +- .../rpc/model/model_protocols.py | 24 ------------ .../rpc/model/points/points_protocols.py | 33 ++++++++++++++++ .../schemas/size.json} | 2 +- .../schemas/visibility.json} | 2 +- src/opengeodeweb_viewer/vtkw_server.py | 8 ++++ .../visibility.jpeg} | Bin .../{points.size.jpeg => points/size.jpeg} | Bin .../visibility.jpeg} | Bin .../model/edges/test_model_edges_protocols.py | 21 ++++++++++ .../points/test_model_points_protocols.py | 33 ++++++++++++++++ src/tests/model/test_model_protocols.py | 36 ------------------ 14 files changed, 127 insertions(+), 63 deletions(-) create mode 100644 src/opengeodeweb_viewer/rpc/model/edges/edges_protocols.py rename src/opengeodeweb_viewer/rpc/model/{schemas/edges.visibility.json => edges/schemas/visibility.json} (89%) create mode 100644 src/opengeodeweb_viewer/rpc/model/points/points_protocols.py rename src/opengeodeweb_viewer/rpc/model/{schemas/points.size.json => points/schemas/size.json} (90%) rename src/opengeodeweb_viewer/rpc/model/{schemas/points.visibility.json => points/schemas/visibility.json} (88%) rename src/tests/data/images/model/{edges.visibility.jpeg => edges/visibility.jpeg} (100%) rename src/tests/data/images/model/{points.size.jpeg => points/size.jpeg} (100%) rename src/tests/data/images/model/{points.visibility.jpeg => points/visibility.jpeg} (100%) create mode 100644 src/tests/model/edges/test_model_edges_protocols.py create mode 100644 src/tests/model/points/test_model_points_protocols.py diff --git a/pyproject.toml b/pyproject.toml index b7ed6b7..6fc9ed2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,6 +43,8 @@ where = ["src"] "opengeodeweb_viewer.rpc.mesh.polygons.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.mesh.polyhedra.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.model.schemas" = ["*.json"] +"opengeodeweb_viewer.rpc.model.edges.schemas" = ["*.json"] +"opengeodeweb_viewer.rpc.model.points.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.model.corners.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.model.lines.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.model.surfaces.schemas" = ["*.json"] diff --git a/src/opengeodeweb_viewer/rpc/model/edges/edges_protocols.py b/src/opengeodeweb_viewer/rpc/model/edges/edges_protocols.py new file mode 100644 index 0000000..8aace53 --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/model/edges/edges_protocols.py @@ -0,0 +1,27 @@ +# Standard library imports +import os + +# Third party imports +from wslink import register as exportRpc + +# Local application imports +from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema +from opengeodeweb_viewer.rpc.model.model_protocols import VtkModelView + + +class VtkModelEdgesView(VtkModelView): + model_edges_prefix = "opengeodeweb_viewer.model.edges." + model_edges_schemas_dict = get_schemas_dict( + os.path.join(os.path.dirname(__file__), "schemas") + ) + + def __init__(self): + super().__init__() + + @exportRpc(model_edges_prefix + model_edges_schemas_dict["visibility"]["rpc"]) + def setModelEdgesVisibility(self, params): + validate_schema( + params, self.model_edges_schemas_dict["visibility"], self.model_edges_prefix + ) + id, visibility = params["id"], params["visibility"] + self.SetEdgesVisibility(id, visibility) diff --git a/src/opengeodeweb_viewer/rpc/model/schemas/edges.visibility.json b/src/opengeodeweb_viewer/rpc/model/edges/schemas/visibility.json similarity index 89% rename from src/opengeodeweb_viewer/rpc/model/schemas/edges.visibility.json rename to src/opengeodeweb_viewer/rpc/model/edges/schemas/visibility.json index bc9a912..e699d92 100644 --- a/src/opengeodeweb_viewer/rpc/model/schemas/edges.visibility.json +++ b/src/opengeodeweb_viewer/rpc/model/edges/schemas/visibility.json @@ -1,5 +1,5 @@ { - "rpc": "edges.visibility", + "rpc": "visibility", "type": "object", "properties": { "id": { diff --git a/src/opengeodeweb_viewer/rpc/model/model_protocols.py b/src/opengeodeweb_viewer/rpc/model/model_protocols.py index c27ec65..a9d46a8 100644 --- a/src/opengeodeweb_viewer/rpc/model/model_protocols.py +++ b/src/opengeodeweb_viewer/rpc/model/model_protocols.py @@ -51,27 +51,3 @@ def setModelVisibility(self, params): ) id, visibility = params["id"], params["visibility"] self.SetVisibility(id, visibility) - - @exportRpc(model_prefix + model_schemas_dict["points.visibility"]["rpc"]) - def setModelPointsVisibility(self, params): - validate_schema( - params, self.model_schemas_dict["points.visibility"], self.model_prefix - ) - id, visibility = params["id"], params["visibility"] - self.SetPointsVisibility(id, visibility) - - @exportRpc(model_prefix + model_schemas_dict["points.size"]["rpc"]) - def setModelPointsSize(self, params): - validate_schema( - params, self.model_schemas_dict["points.size"], self.model_prefix - ) - id, size = params["id"], params["size"] - self.SetPointsSize(id, size) - - @exportRpc(model_prefix + model_schemas_dict["edges.visibility"]["rpc"]) - def setModelEdgesVisibility(self, params): - validate_schema( - params, self.model_schemas_dict["edges.visibility"], self.model_prefix - ) - id, visibility = params["id"], params["visibility"] - self.SetEdgesVisibility(id, visibility) diff --git a/src/opengeodeweb_viewer/rpc/model/points/points_protocols.py b/src/opengeodeweb_viewer/rpc/model/points/points_protocols.py new file mode 100644 index 0000000..8d20479 --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/model/points/points_protocols.py @@ -0,0 +1,33 @@ +# Standard library imports +import os + +# Third party imports +from wslink import register as exportRpc + +# Local application imports +from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema +from opengeodeweb_viewer.rpc.model.model_protocols import VtkModelView + + +class VtkModelPointsView(VtkModelView): + model_points_prefix = "opengeodeweb_viewer.model.points." + model_points_schemas_dict = get_schemas_dict( + os.path.join(os.path.dirname(__file__), "schemas") + ) + + def __init__(self): + super().__init__() + + @exportRpc(model_points_prefix + model_points_schemas_dict["visibility"]["rpc"]) + def setModelPointsVisibility(self, params): + validate_schema( + params, self.model_schemas_dict["visibility"], self.model_prefix + ) + id, visibility = params["id"], params["visibility"] + self.SetPointsVisibility(id, visibility) + + @exportRpc(model_points_prefix + model_points_schemas_dict["size"]["rpc"]) + def setModelPointsSize(self, params): + validate_schema(params, self.model_schemas_dict["size"], self.model_prefix) + id, size = params["id"], params["size"] + self.SetPointsSize(id, size) diff --git a/src/opengeodeweb_viewer/rpc/model/schemas/points.size.json b/src/opengeodeweb_viewer/rpc/model/points/schemas/size.json similarity index 90% rename from src/opengeodeweb_viewer/rpc/model/schemas/points.size.json rename to src/opengeodeweb_viewer/rpc/model/points/schemas/size.json index 8d4363b..75a8889 100644 --- a/src/opengeodeweb_viewer/rpc/model/schemas/points.size.json +++ b/src/opengeodeweb_viewer/rpc/model/points/schemas/size.json @@ -1,5 +1,5 @@ { - "rpc": "points.size", + "rpc": "size", "type": "object", "properties": { "id": { diff --git a/src/opengeodeweb_viewer/rpc/model/schemas/points.visibility.json b/src/opengeodeweb_viewer/rpc/model/points/schemas/visibility.json similarity index 88% rename from src/opengeodeweb_viewer/rpc/model/schemas/points.visibility.json rename to src/opengeodeweb_viewer/rpc/model/points/schemas/visibility.json index 714c0bb..e699d92 100644 --- a/src/opengeodeweb_viewer/rpc/model/schemas/points.visibility.json +++ b/src/opengeodeweb_viewer/rpc/model/points/schemas/visibility.json @@ -1,5 +1,5 @@ { - "rpc": "points.visibility", + "rpc": "visibility", "type": "object", "properties": { "id": { diff --git a/src/opengeodeweb_viewer/vtkw_server.py b/src/opengeodeweb_viewer/vtkw_server.py index 6805d0f..45dd29f 100644 --- a/src/opengeodeweb_viewer/vtkw_server.py +++ b/src/opengeodeweb_viewer/vtkw_server.py @@ -18,6 +18,12 @@ from .rpc.mesh.polygons.polygons_protocols import VtkMeshPolygonsView from .rpc.mesh.polyhedra.polyhedra_protocols import VtkMeshPolyhedraView from .rpc.model.model_protocols import VtkModelView +from .rpc.model.edges.edges_protocols import ( + VtkModelEdgesView, +) +from .rpc.model.points.points_protocols import ( + VtkModelPointsView, +) from .rpc.model.corners.corners_protocols import ( VtkModelCornersView, ) @@ -79,6 +85,8 @@ def initialize(self): self.registerVtkWebProtocol(VtkMeshPolygonsView()) self.registerVtkWebProtocol(VtkMeshPolyhedraView()) self.registerVtkWebProtocol(model_protocols) + self.registerVtkWebProtocol(VtkModelEdgesView()) + self.registerVtkWebProtocol(VtkModelPointsView()) self.registerVtkWebProtocol(VtkModelCornersView()) self.registerVtkWebProtocol(VtkModelLinesView()) self.registerVtkWebProtocol(VtkModelSurfacesView()) diff --git a/src/tests/data/images/model/edges.visibility.jpeg b/src/tests/data/images/model/edges/visibility.jpeg similarity index 100% rename from src/tests/data/images/model/edges.visibility.jpeg rename to src/tests/data/images/model/edges/visibility.jpeg diff --git a/src/tests/data/images/model/points.size.jpeg b/src/tests/data/images/model/points/size.jpeg similarity index 100% rename from src/tests/data/images/model/points.size.jpeg rename to src/tests/data/images/model/points/size.jpeg diff --git a/src/tests/data/images/model/points.visibility.jpeg b/src/tests/data/images/model/points/visibility.jpeg similarity index 100% rename from src/tests/data/images/model/points.visibility.jpeg rename to src/tests/data/images/model/points/visibility.jpeg diff --git a/src/tests/model/edges/test_model_edges_protocols.py b/src/tests/model/edges/test_model_edges_protocols.py new file mode 100644 index 0000000..a14ce1e --- /dev/null +++ b/src/tests/model/edges/test_model_edges_protocols.py @@ -0,0 +1,21 @@ +# Standard library imports + +# Third party imports +from opengeodeweb_viewer.rpc.model.edges.edges_protocols import ( + VtkModelEdgesView, +) + +# Local application imports +from src.tests.model.test_model_protocols import test_register_model + + +def test_edges_visibility(server): + + test_register_model(server) + + server.call( + VtkModelEdgesView.model_edges_prefix + + VtkModelEdgesView.model_edges_schemas_dict["visibility"]["rpc"], + [{"id": "123456789", "visibility": True}], + ) + assert server.compare_image(3, "model/edges/visibility.jpeg") == True diff --git a/src/tests/model/points/test_model_points_protocols.py b/src/tests/model/points/test_model_points_protocols.py new file mode 100644 index 0000000..15ca7b5 --- /dev/null +++ b/src/tests/model/points/test_model_points_protocols.py @@ -0,0 +1,33 @@ +# Standard library imports + +# Third party imports +from opengeodeweb_viewer.rpc.model.points.points_protocols import ( + VtkModelPointsView, +) + +# Local application imports +from src.tests.model.test_model_protocols import test_register_model + + +def test_points_visibility(server): + + test_register_model(server) + + server.call( + VtkModelPointsView.model_points_prefix + + VtkModelPointsView.model_points_schemas_dict["visibility"]["rpc"], + [{"id": "123456789", "visibility": True}], + ) + assert server.compare_image(3, "model/points/visibility.jpeg") == True + + +def test_points_size(server): + + test_points_visibility(server) + + server.call( + VtkModelPointsView.model_points_prefix + + VtkModelPointsView.model_points_schemas_dict["size"]["rpc"], + [{"id": "123456789", "size": 20}], + ) + assert server.compare_image(3, "model/points/size.jpeg") == True diff --git a/src/tests/model/test_model_protocols.py b/src/tests/model/test_model_protocols.py index 0583500..fef5977 100644 --- a/src/tests/model/test_model_protocols.py +++ b/src/tests/model/test_model_protocols.py @@ -41,39 +41,3 @@ def test_deregister_model(server): [{"id": "123456789"}], ) assert server.compare_image(3, "model/deregister.jpeg") == True - - -def test_edges_visibility(server): - - test_register_model(server) - - server.call( - VtkModelView.model_prefix - + VtkModelView.model_schemas_dict["edges.visibility"]["rpc"], - [{"id": "123456789", "visibility": True}], - ) - assert server.compare_image(3, "model/edges.visibility.jpeg") == True - - -def test_points_visibility(server): - - test_register_model(server) - - server.call( - VtkModelView.model_prefix - + VtkModelView.model_schemas_dict["points.visibility"]["rpc"], - [{"id": "123456789", "visibility": True}], - ) - assert server.compare_image(3, "model/points.visibility.jpeg") == True - - -def test_points_size(server): - - test_points_visibility(server) - - server.call( - VtkModelView.model_prefix - + VtkModelView.model_schemas_dict["points.size"]["rpc"], - [{"id": "123456789", "size": 20}], - ) - assert server.compare_image(3, "model/points.size.jpeg") == True From 8ae55449f75834fd759ce4917ad9d3bd5695d403 Mon Sep 17 00:00:00 2001 From: SpliiT Date: Tue, 10 Jun 2025 15:54:32 +0200 Subject: [PATCH 2/3] fix imports points_protocols --- .../rpc/model/points/points_protocols.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/opengeodeweb_viewer/rpc/model/points/points_protocols.py b/src/opengeodeweb_viewer/rpc/model/points/points_protocols.py index 8d20479..77a8015 100644 --- a/src/opengeodeweb_viewer/rpc/model/points/points_protocols.py +++ b/src/opengeodeweb_viewer/rpc/model/points/points_protocols.py @@ -21,13 +21,17 @@ def __init__(self): @exportRpc(model_points_prefix + model_points_schemas_dict["visibility"]["rpc"]) def setModelPointsVisibility(self, params): validate_schema( - params, self.model_schemas_dict["visibility"], self.model_prefix + params, + self.model_points_schemas_dict["visibility"], + self.model_points_prefix, ) id, visibility = params["id"], params["visibility"] self.SetPointsVisibility(id, visibility) @exportRpc(model_points_prefix + model_points_schemas_dict["size"]["rpc"]) def setModelPointsSize(self, params): - validate_schema(params, self.model_schemas_dict["size"], self.model_prefix) + validate_schema( + params, self.model_points_schemas_dict["size"], self.model_points_prefix + ) id, size = params["id"], params["size"] self.SetPointsSize(id, size) From 76569f3225c4985ebd233b9a161ee5ba5917d406 Mon Sep 17 00:00:00 2001 From: semantic-release Date: Tue, 10 Jun 2025 13:59:20 +0000 Subject: [PATCH 3/3] 1.8.1-rc.1 Automatically generated by python-semantic-release --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6fc9ed2..f3983cb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "OpenGeodeWeb-Viewer" -version = "1.8.0" +version = "1.8.1-rc.1" dynamic = ["dependencies"] authors = [ { name="Geode-solutions", email="team-web@geode-solutions.com" },