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 }  , 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 } { 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