11# Standard library imports
22import os
3+ from typing import cast
34
45# Third party imports
56from wslink import register as exportRpc # type: ignore
67
78# Local application imports
89from opengeodeweb_microservice .schemas import get_schemas_dict
910from opengeodeweb_viewer .vtk_protocol import VtkView
11+ from opengeodeweb_microservice .database import connection
12+ from opengeodeweb_viewer .utils_functions import validate_schema , RpcParams
13+ from opengeodeweb_viewer .rpc .schemas .import_project import ImportProject
1014
1115
1216class VtkUtilsView (VtkView ):
@@ -25,3 +29,45 @@ def kill(self) -> None:
2529 )
2630 print ("Manual viewer kill, shutting down..." , flush = True )
2731 os ._exit (0 )
32+
33+ @exportRpc (utils_prefix + utils_schemas_dict ["import_project" ]["rpc" ])
34+ def importProject (self , rpc_params : RpcParams ) -> None :
35+ print (
36+ f"{ self .utils_prefix + self .utils_schemas_dict ['import_project' ]['rpc' ]} " ,
37+ flush = True ,
38+ )
39+ validate_schema (
40+ rpc_params ,
41+ self .utils_schemas_dict ["import_project" ],
42+ self .utils_prefix ,
43+ )
44+
45+ widget = self .get_widget ()
46+ if widget is not None :
47+ try :
48+ widget .EnabledOff ()
49+ except Exception :
50+ pass
51+ self .coreServer .setSharedObject ("widget" , None )
52+ self .coreServer .setSharedObject ("grid_scale" , None )
53+ self .coreServer .setSharedObject ("axes" , None )
54+
55+ self .get_data_base ().clear ()
56+
57+ self ._release_database ()
58+
59+ db_full_path = os .path .join (self .DATA_FOLDER_PATH , "project.db" )
60+ connection .init_database (db_full_path , create_tables = False )
61+
62+ @exportRpc (utils_prefix + "release_database" )
63+ def releaseDatabase (self , rpc_params : RpcParams ) -> None :
64+ self ._release_database ()
65+
66+ def _release_database (self ) -> None :
67+ if connection .scoped_session_registry is not None :
68+ connection .scoped_session_registry .remove ()
69+ if connection .engine is not None :
70+ connection .engine .dispose ()
71+ connection .engine = connection .session_factory = (
72+ connection .scoped_session_registry
73+ ) = None
0 commit comments