1818#########################################################################
1919import sys
2020import json
21+ import logging
2122
2223from django .core .management .base import BaseCommand
24+ from geonode .base .management .command_utils import setup_logger
2325
2426from geonode .layers .models import Dataset
2527from geonode .security .views import _perms_info_json
2628from geonode .base .utils import remove_duplicate_links
2729from geonode .geoserver .helpers import create_gs_thumbnail , sync_instance_with_geoserver , set_attributes_from_geoserver
2830
31+ logger = logging .getLogger (__name__ )
32+
2933
3034def sync_geonode_datasets (
3135 ignore_errors ,
@@ -46,47 +50,51 @@ def sync_geonode_datasets(
4650 layers_count = layers .count ()
4751 count = 0
4852 dataset_errors = []
53+ if not layers :
54+ logger .warning (f"No layers selected by filter '{ filter } '" )
55+ return
4956 for layer in layers :
5057 try :
5158 count += 1
52- print (f"Syncing layer { count } /{ layers_count } : { layer .name } " )
59+ logger . info (f"=== Syncing layer { count } /{ layers_count } : { layer .name } " )
5360 if updatepermissions :
54- print ("Syncing permissions..." )
61+ logger . info ("Syncing permissions..." )
5562 # sync permissions in GeoFence
5663 perm_spec = json .loads (_perms_info_json (layer ))
5764 # re-sync GeoFence security rules
5865 layer .set_permissions (perm_spec )
5966 if updateattributes :
6067 # recalculate the layer statistics
68+ logger .info ("Setting attributes..." )
6169 set_attributes_from_geoserver (layer , overwrite = True )
6270 if updatethumbnails :
63- print ("Regenerating thumbnails..." )
71+ logger . info ("Regenerating thumbnails..." )
6472 create_gs_thumbnail (layer , overwrite = True , check_bbox = False )
6573 if updatebbox :
66- print ("Regenerating BBOX..." )
74+ logger . info ("Regenerating BBOX..." )
6775 sync_instance_with_geoserver (layer .id , updatemetadata = False , updatebbox = True )
6876 if updatemetadata :
69- print ("Updating metadata..." )
77+ logger . info ("Updating metadata..." )
7078 sync_instance_with_geoserver (layer .id , updatemetadata = True , updatebbox = False )
7179 if removeduplicates :
7280 # remove duplicates
73- print ("Removing duplicate links..." )
81+ logger . info ("Removing duplicate links..." )
7482 remove_duplicate_links (layer )
7583 except (Exception , RuntimeError ):
7684 dataset_errors .append (layer .alternate )
7785 exception_type , error , traceback = sys .exc_info ()
78- print (exception_type , error , traceback )
86+ logger . info (exception_type , error , traceback )
7987 if ignore_errors :
8088 pass
8189 else :
82- import traceback
83-
84- traceback .print_exc ()
85- print ("Stopping process because --ignore-errors was not set and an error was found." )
90+ logger .error (
91+ "Stopping process because --ignore-errors was not set and an error was found." , stack_info = True
92+ )
8693 return
87- print (f"There are { len (dataset_errors )} layers which could not be updated because of errors" )
88- for dataset_error in dataset_errors :
89- print (dataset_error )
94+ if dataset_errors :
95+ logger .info (f"There are { len (dataset_errors )} layers which could not be updated because of errors" )
96+ for dataset_error in dataset_errors :
97+ logger .info (dataset_error )
9098
9199
92100class Command (BaseCommand ):
@@ -148,10 +156,22 @@ def add_arguments(self, parser):
148156 action = "store_true" ,
149157 dest = "updatemetadata" ,
150158 default = False ,
151- help = "Update the Geoserver ayer metadata." ,
159+ help = "Update the Geoserver layer metadata." ,
160+ )
161+ parser .add_argument (
162+ "--debug" ,
163+ action = "store_true" ,
164+ dest = "log_debug" ,
165+ default = False ,
166+ help = "Enable debug logging." ,
152167 )
153168
154169 def handle (self , ** options ):
170+ log_level = logging .DEBUG if options .get ("log_debug" ) else logging .INFO
171+ setup_logger (__name__ , level = log_level )
172+ import geonode .geoserver .helpers as helpers
173+
174+ setup_logger (helpers .__name__ , level = log_level )
155175 ignore_errors = options .get ("ignore_errors" )
156176 removeduplicates = options .get ("removeduplicates" )
157177 updatepermissions = options .get ("updatepermissions" )
0 commit comments