Skip to content

Commit 1758f43

Browse files
committed
feat(import_project): new schema, rpc added to reset viewer and prepare imported datas
1 parent 8c4c41f commit 1758f43

File tree

4 files changed

+80
-0
lines changed

4 files changed

+80
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"rpc": "reset_project",
3+
"type": "object",
4+
"properties": {},
5+
"required": [],
6+
"additionalProperties": false
7+
}

src/opengeodeweb_viewer/rpc/utils_protocols.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
# Local application imports
88
from opengeodeweb_microservice.schemas import get_schemas_dict
99
from opengeodeweb_viewer.vtk_protocol import VtkView
10+
from opengeodeweb_microservice.database import connection
1011

1112

1213
class VtkUtilsView(VtkView):
@@ -25,3 +26,29 @@ def kill(self) -> None:
2526
)
2627
print("Manual viewer kill, shutting down...", flush=True)
2728
os._exit(0)
29+
30+
@exportRpc(utils_prefix + utils_schemas_dict["reset_project"]["rpc"])
31+
def resetProject(self, rpc_params: dict | None = None) -> None:
32+
print(
33+
f"{self.utils_prefix + self.utils_schemas_dict['reset_project']['rpc']}",
34+
flush=True,
35+
)
36+
renderWindow = self.getView("-1")
37+
renderer = renderWindow.GetRenderers().GetFirstRenderer()
38+
39+
renderer.RemoveAllViewProps()
40+
41+
widget = self.get_widget()
42+
if widget is not None:
43+
try:
44+
widget.EnabledOff()
45+
except Exception:
46+
pass
47+
self.coreServer.setSharedObject("widget", None)
48+
self.coreServer.setSharedObject("grid_scale", None)
49+
self.coreServer.setSharedObject("axes", None)
50+
51+
self.get_data_base().clear()
52+
53+
db_full_path = os.path.join(self.DATA_FOLDER_PATH, "project.db")
54+
connection.init_database(db_full_path, create_tables=False)
10.5 KB
Loading

tests/test_utils_protocols.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
from typing import Callable
2+
from opengeodeweb_viewer.rpc.utils_protocols import VtkUtilsView
3+
from opengeodeweb_viewer.rpc.viewer.viewer_protocols import VtkViewerView
4+
from opengeodeweb_viewer.rpc.mesh.mesh_protocols import VtkMeshView
5+
from opengeodeweb_microservice.database.connection import get_session
6+
from opengeodeweb_microservice.database.data import Data
7+
from tests.conftest import ServerMonitor
8+
9+
10+
def test_reset_project_after_import(
11+
server: ServerMonitor, dataset_factory: Callable[..., str]
12+
) -> None:
13+
# Mock
14+
pre_id = "123456789"
15+
dataset_factory(id=pre_id, viewable_file_name="hat.vtp")
16+
server.call(
17+
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"],
18+
[{"id": pre_id}],
19+
)
20+
assert server.compare_image(3, "mesh/register.jpeg") is True
21+
22+
# Import
23+
with get_session() as session:
24+
session.query(Data).delete()
25+
session.commit()
26+
27+
post_id = "987654321"
28+
dataset_factory(id=post_id, viewable_file_name="hat.vtp")
29+
30+
server.call(
31+
VtkUtilsView.utils_prefix
32+
+ VtkUtilsView.utils_schemas_dict["reset_project"]["rpc"]
33+
)
34+
server.get_response()
35+
36+
server.call(
37+
VtkViewerView.viewer_prefix
38+
+ VtkViewerView.viewer_schemas_dict["reset_visualization"]["rpc"]
39+
)
40+
assert server.compare_image(3, "viewer/reset_visualization.jpeg") is True
41+
42+
server.call(
43+
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"],
44+
[{"id": post_id}],
45+
)
46+
assert server.compare_image(3, "viewer/import_project.jpeg") is True

0 commit comments

Comments
 (0)