aboutsummaryrefslogtreecommitdiffstats
path: root/webmap-import
diff options
context:
space:
mode:
Diffstat (limited to 'webmap-import')
-rwxr-xr-xwebmap-import37
1 files changed, 24 insertions, 13 deletions
diff --git a/webmap-import b/webmap-import
index c801b6d..6f514a9 100755
--- a/webmap-import
+++ b/webmap-import
@@ -64,7 +64,8 @@ from import_source import (
openOutputDS,
createOutputLayer,
validateOutputLayer,
- importSources
+ importSources,
+ ImportStatus
)
def setFieldIf(cond : bool,
@@ -256,9 +257,8 @@ def processOutputLayer(ds : gdal.Dataset,
extent : ogr.Geometry|None = None,
dsTransaction : bool = False,
lyrcache : ogr.Layer|None = None,
- force : bool = False) -> bool:
- """Process an output layer, and return a boolean indicating whether
- the import was sucessful (or skipped), or not."""
+ force : bool = False) -> ImportStatus:
+ """Process an output layer."""
logging.info('Processing output layer "%s"', layername)
lyr = ds.GetLayerByName(layername)
@@ -274,7 +274,7 @@ def processOutputLayer(ds : gdal.Dataset,
lyrcache=lyrcache,
cachedir=cachedir)):
logging.info('Output layer "%s" is up to date, skipping', layername)
- return True
+ return ImportStatus.IMPORT_NOCHANGE
validateOutputLayer(lyr, srs=srs, options=layerdef['create'])
@@ -661,15 +661,26 @@ def main() -> NoReturn:
rv = 0
try:
+ r = ImportStatus.IMPORT_NOCHANGE
for layername, layerdef in layers.items():
- if not processOutputLayer(dso, layername, layerdef,
- srs=srs,
- cachedir=cachedir,
- extent=extent,
- dsTransaction=dsoTransaction,
- lyrcache=lyr_cache,
- force=args.force):
+ r0 = processOutputLayer(dso, layername, layerdef,
+ srs=srs,
+ cachedir=cachedir,
+ extent=extent,
+ dsTransaction=dsoTransaction,
+ lyrcache=lyr_cache,
+ force=args.force)
+ if r0 == ImportStatus.IMPORT_ERROR:
rv = 1
+ if dsoTransaction:
+ dsoTransaction = False
+ logging.debug('Rolling back transaction')
+ # no need to catch the exception here
+ if dso.CommitTransaction() != ogr.OGRERR_NONE:
+ logging.error('Could not rollback transaction')
+ if r == ImportStatus.IMPORT_NOCHANGE and r0 == ImportStatus.IMPORT_SUCCESS:
+ r = ImportStatus.IMPORT_SUCCESS
+ logging.info('result = %s', str(r))
if sourcePathLocks is not None:
releaseSourcePathLocks(sourcePathLocks)
@@ -682,7 +693,6 @@ def main() -> NoReturn:
rv = 1
except Exception: # pylint: disable=broad-exception-caught
- rv = 1
if dsoTransaction:
logging.exception('Exception occured within transaction, rolling back')
try:
@@ -692,6 +702,7 @@ def main() -> NoReturn:
logging.exception('Could not rollback transaction')
else:
traceback.print_exc()
+ sys.exit(1)
finally:
lyr_cache = None