55
66import importlib .resources as pkg_resources
77
8- from io import BytesIO
98from pathlib import Path
109from osgeo import ogr
11- from PIL import Image
1210
1311from django .conf import settings
12+ from django .db .utils import DataError
1413from django .db .models import Q
1514
1615from geonode .base .models import ResourceBase
1716from geonode .layers .models import Dataset
1817from geonode .resource .manager import resource_manager
1918from geonode .resource .models import ExecutionRequest
2019from geonode .resource .enumerator import ExecutionRequestAction as exa
21- from geonode .geoserver .helpers import set_attributes
2220from geonode .utils import set_resource_default_links
2321
2422from importer .handlers .common .vector import BaseVectorFileHandler
@@ -100,12 +98,13 @@ def prepare_import(self, files, execution_id, **kwargs):
10098 process_rows (resource )
10199
102100 folder = Path (_file ).parent
103- mapper = TabularDataHelper (package )
101+ mapper = TabularDataHelper (package , self . fixup_name )
104102 vrt_file = mapper .write_vrt_file (f"{ package .name } .vrt" , folder )
105103
106104 # update base file to be imported by ogr2ogr
107105 prepared_files = {
108106 "base_file" : str (vrt_file ),
107+ # "sld_file": str(self.load_local_resource("fake.sld")),
109108 "package_file" : _file ,
110109 }
111110 files .update (prepared_files )
@@ -118,21 +117,21 @@ def prepare_import(self, files, execution_id, **kwargs):
118117 execution_id = str (execution_id ), input_params = _input
119118 )
120119
121- def can_handle_sld_file ():
122- return False
120+ # def can_handle_sld_file():
121+ # return True
123122
124123 def get_ogr2ogr_driver (self ):
125124 return ogr .GetDriverByName ("VRT" )
126125
127- def handle_sld_file (self , saved_dataset : Dataset , _exec : ExecutionRequest ):
128- sld_file = self .load_local_resource ("fake.sld" )
129- resource_manager .exec (
130- "set_style" ,
131- None ,
132- instance = saved_dataset ,
133- sld_file = sld_file ,
134- sld_uploaded = True ,
135- )
126+ # def handle_sld_file(self, saved_dataset: Dataset, _exec: ExecutionRequest):
127+ # sld_file = self.load_local_resource("fake.sld")
128+ # resource_manager.exec(
129+ # "set_style",
130+ # None,
131+ # instance=saved_dataset,
132+ # sld_file=sld_file,
133+ # sld_uploaded=True,
134+ # )
136135
137136 def create_geonode_resource (
138137 self ,
@@ -190,10 +189,33 @@ def create_geonode_resource(
190189 package_file = _files .get ("package_file" )
191190 package = Package (package_file )
192191
193- mapper = TabularDataHelper (package )
194- attribute_map = mapper .parse_attribute_map (layer_name , self .fixup_name )
195- set_attributes (saved_dataset , attribute_map , _overwrite )
196-
192+ mapper = TabularDataHelper (package , self .fixup_name )
193+ attributes = saved_dataset .attribute_set .all ()
194+ attribute_map = mapper .parse_attribute_map (layer_name )
195+ for la in attributes :
196+ for attribute in attribute_map :
197+ field , ftype , description , label , display_order = attribute
198+ if field == la .attribute :
199+ try :
200+ la .description = description
201+ la .attribute_label = label
202+ la .save ()
203+ except DataError as e :
204+ logger .error (f"Cannot save attribute { field } for layer { saved_dataset .name } : { e } " )
205+
206+ continue
207+
208+ saved_dataset .set_bbox_polygon (
209+ # for 'non-spatial' data we apply world bbox
210+ bbox = [
211+ - 179.0 , # west
212+ - 89.0 , # south,
213+ 179.0 , # east,
214+ 89.0 , #n north,
215+ ],
216+ srid = "EPSG:4326" ,
217+ )
218+ saved_dataset .save ()
197219 saved_dataset .refresh_from_db ()
198220 return saved_dataset
199221
0 commit comments