4
4
5
5
from geonode import settings
6
6
from geonode .geoserver .helpers import create_geoserver_db_featurestore
7
- from geonode .services .serviceprocessors .base import get_geoserver_cascading_workspace
8
7
from geoserver .catalog import Catalog
9
8
from geonode .utils import OGC_Servers_Handler
10
9
from django .utils .module_loading import import_string
@@ -28,9 +27,10 @@ def __init__(self, handler_module_path) -> None:
28
27
self .cat = Catalog (
29
28
service_url = ogc_server_settings .rest , username = _user , password = _password
30
29
)
31
- self .workspace = get_geoserver_cascading_workspace (create = True )
30
+ self .workspace = self . _get_default_workspace (create = True )
32
31
33
- self .handler = import_string (handler_module_path )()
32
+ if handler_module_path is not None :
33
+ self .handler = import_string (handler_module_path )()
34
34
35
35
def extract_resource_to_publish (
36
36
self , files : dict , action : str , layer_name , alternate = None , ** kwargs
@@ -90,9 +90,19 @@ def delete_resource(self, resource_name):
90
90
layer = self .get_resource (resource_name )
91
91
if layer and layer .resource :
92
92
self .cat .delete (layer .resource , purge = "all" , recurse = True )
93
- store = self .cat .get_store (resource_name .split (":" )[- 1 ], workspace = os .getenv ("DEFAULT_WORKSPACE" , os .getenv ("CASCADE_WORKSPACE" , "geonode" )))
93
+ store = self .cat .get_store (
94
+ resource_name .split (":" )[- 1 ],
95
+ workspace = os .getenv (
96
+ "DEFAULT_WORKSPACE" , os .getenv ("CASCADE_WORKSPACE" , "geonode" )
97
+ ),
98
+ )
94
99
if not store :
95
- store = self .cat .get_store (resource_name , workspace = os .getenv ("DEFAULT_WORKSPACE" , os .getenv ("CASCADE_WORKSPACE" , "geonode" )))
100
+ store = self .cat .get_store (
101
+ resource_name ,
102
+ workspace = os .getenv (
103
+ "DEFAULT_WORKSPACE" , os .getenv ("CASCADE_WORKSPACE" , "geonode" )
104
+ ),
105
+ )
96
106
if store :
97
107
self .cat .delete (store , purge = "all" , recurse = True )
98
108
@@ -138,9 +148,32 @@ def sanity_checks(self, resources):
138
148
"""
139
149
140
150
for _resource in resources :
141
- possible_layer_name = [_resource .get ("name" ), _resource .get ("name" ).split (":" )[- 1 ], f"{ self .workspace .name } :{ _resource .get ('name' )} " ]
142
- res = list (filter (None , (self .cat .get_resource (x , workspace = self .workspace ) for x in possible_layer_name )))
151
+ possible_layer_name = [
152
+ _resource .get ("name" ),
153
+ _resource .get ("name" ).split (":" )[- 1 ],
154
+ f"{ self .workspace .name } :{ _resource .get ('name' )} " ,
155
+ ]
156
+ res = list (
157
+ filter (
158
+ None ,
159
+ (
160
+ self .cat .get_resource (x , workspace = self .workspace )
161
+ for x in possible_layer_name
162
+ ),
163
+ )
164
+ )
143
165
if not res or (res and not res [0 ].projection ):
144
166
raise PublishResourceException (
145
167
f"The SRID for the resource { _resource } is not correctly set, Please check Geoserver logs"
146
168
)
169
+
170
+ def _get_default_workspace (self , create = True ):
171
+ """Return the default geoserver workspace
172
+ The workspace can be created it if needed.
173
+ """
174
+ name = getattr (settings , "DEFAULT_WORKSPACE" , "geonode" )
175
+ workspace = self .cat .get_workspace (name )
176
+ if workspace is None and create :
177
+ uri = f"http://www.geonode.org/{ name } "
178
+ workspace = self .cat .create_workspace (name , uri )
179
+ return workspace
0 commit comments