Skip to content

Commit

Permalink
[Fixes #12368] fix replace
Browse files Browse the repository at this point in the history
  • Loading branch information
mattiagiupponi committed Oct 15, 2024
1 parent 7bb9fd5 commit 51ef4e1
Show file tree
Hide file tree
Showing 10 changed files with 33 additions and 20 deletions.
4 changes: 2 additions & 2 deletions .env_dev
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ GEODATABASE_URL=postgis://geonode:geonode@localhost:5432/geonode_data
GEONODE_DB_CONN_MAX_AGE=0
GEONODE_DB_CONN_TOUT=5
DEFAULT_BACKEND_DATASTORE=datastore
BROKER_URL=amqp://admin:admin@localhost:5672//
BROKER_URL=amqp://guest:guest@localhost:5672//
CELERY_BEAT_SCHEDULER=celery.beat:PersistentScheduler
ASYNC_SIGNALS=False
ASYNC_SIGNALS=True

SITEURL=http://localhost:8000/

Expand Down
9 changes: 5 additions & 4 deletions geonode/upload/api/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,11 @@ class Meta:
ref_name = "OverwriteImporterSerializer"
model = ResourceBase
view_name = "importer_upload"
fields = ImporterSerializer.Meta.fields + (
"overwrite_existing_layer",
"resource_pk",
)
fields = ImporterSerializer.Meta.fields + (
"overwrite_existing_layer",
"resource_pk",
)

overwrite_existing_layer = serializers.BooleanField(required=True)
resource_pk = serializers.IntegerField(required=True)

Expand Down
3 changes: 1 addition & 2 deletions geonode/upload/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#########################################################################
import ast
import logging
from urllib.parse import urljoin
from django.conf import settings
Expand Down Expand Up @@ -44,7 +43,7 @@
from geonode.upload.models import UploadParallelismLimit, UploadSizeLimit
from geonode.upload.utils import UploadLimitValidator
from geonode.upload.api.exceptions import HandlerException, ImportException
from geonode.upload.api.serializer import ImporterSerializer, OverwriteImporterSerializer
from geonode.upload.api.serializer import ImporterSerializer
from geonode.upload.celery_tasks import import_orchestrator
from geonode.upload.orchestrator import orchestrator
from oauth2_provider.contrib.rest_framework import OAuth2Authentication
Expand Down
6 changes: 4 additions & 2 deletions geonode/upload/celery_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,6 @@ def import_resource(self, execution_id, /, handler_module_path, action, **kwargs
_datastore.start_import(execution_id, **kwargs)

"""
The orchestrator to proceed to the next step, should be called by the handler
since the call to the orchestrator can changed based on the handler
called. See the GPKG handler gpkg_next_step task
"""
Expand Down Expand Up @@ -753,7 +752,10 @@ def rollback(self, *args, **kwargs):
)

handler = import_string(handler_module_path)()
handler.rollback(exec_id, rollback_from_step, action_to_rollback, *args, **kwargs)
if exec_object.input_params.get("overwrite_existing_layer"):
logger.warning("Rollback is skipped for the overwrite")
else:
handler.rollback(exec_id, rollback_from_step, action_to_rollback, *args, **kwargs)
error = find_key_recursively(kwargs, "error") or "Some issue has occured, please check the logs"
orchestrator.set_as_failed(exec_id, reason=error, delete_file=False)
return exec_id, kwargs
Expand Down
3 changes: 2 additions & 1 deletion geonode/upload/handlers/common/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ def extract_params_from_data(_data, action=None):
return {
"dataset_title": _data.pop("dataset_title", None),
"skip_existing_layers": _data.pop("skip_existing_layers", "False"),
"overwrite_existing_layer": _data.pop("overwrite_existing_layer", "False"),
"overwrite_existing_layer": _data.pop("overwrite_existing_layer", False),
"resource_pk": _data.pop("resource_pk", None),
"store_spatial_file": _data.pop("store_spatial_files", "True"),
"source": _data.pop("source", "resource_file_upload"),
}, _data
Expand Down
3 changes: 2 additions & 1 deletion geonode/upload/handlers/common/raster.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,8 @@ def extract_params_from_data(_data, action=None):

return {
"skip_existing_layers": _data.pop("skip_existing_layers", "False"),
"overwrite_existing_layer": _data.pop("overwrite_existing_layer", "False"),
"overwrite_existing_layer": _data.pop("overwrite_existing_layer", False),
"resource_pk": _data.pop("resource_pk", None),
"store_spatial_file": _data.pop("store_spatial_files", "True"),
"source": _data.pop("source", "upload"),
}, _data
Expand Down
11 changes: 9 additions & 2 deletions geonode/upload/handlers/common/vector.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,8 @@ def extract_params_from_data(_data, action=None):

return {
"skip_existing_layers": _data.pop("skip_existing_layers", "False"),
"overwrite_existing_layer": _data.pop("overwrite_existing_layer", "False"),
"overwrite_existing_layer": _data.pop("overwrite_existing_layer", False),
"resource_pk": _data.pop("resource_pk", None),
"store_spatial_file": _data.pop("store_spatial_files", "True"),
"source": _data.pop("source", "upload"),
}, _data
Expand Down Expand Up @@ -411,6 +412,13 @@ def _select_valid_layers(self, all_layers):
return layers

def find_alternate_by_dataset(self, _exec_obj, layer_name, should_be_overwritten):
if _exec_obj.input_params.get("resource_pk"):
dataset = Dataset.objects.filter(pk=_exec_obj.input_params.get("resource_pk")).first()
if not dataset:
raise ImportException("The dataset selected for the ovewrite does not exists")
alternate = dataset.alternate.split(":")
return alternate[-1]

workspace = DataPublisher(None).workspace
dataset_available = Dataset.objects.filter(alternate__iexact=f"{workspace.name}:{layer_name}")

Expand Down Expand Up @@ -624,7 +632,6 @@ def overwrite_geonode_resource(

delete_dataset_cache(dataset.alternate)
# recalculate featuretype info
DataPublisher(str(self)).cat.recalculate_featuretype(dataset)
set_geowebcache_invalidate_cache(dataset_alternate=dataset.alternate)

dataset = resource_manager.update(dataset.uuid, instance=dataset, files=asset.location)
Expand Down
3 changes: 2 additions & 1 deletion geonode/upload/handlers/shapefile/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@ def extract_params_from_data(_data, action=None):

additional_params = {
"skip_existing_layers": _data.pop("skip_existing_layers", "False"),
"overwrite_existing_layer": _data.pop("overwrite_existing_layer", "False"),
"overwrite_existing_layer": _data.pop("overwrite_existing_layer", False),
"resource_pk": _data.pop("resource_pk", None),
"store_spatial_file": _data.pop("store_spatial_files", "True"),
"source": _data.pop("source", "upload"),
}
Expand Down
9 changes: 5 additions & 4 deletions geonode/upload/handlers/shapefile/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,10 @@ class Meta:
ref_name = "ShapeFileSerializer"
model = ResourceBase
view_name = "importer_upload"
fields = ShapeFileSerializer.Meta.fields + (
"overwrite_existing_layer",
"resource_pk",
)
fields = ShapeFileSerializer.Meta.fields + (
"overwrite_existing_layer",
"resource_pk",
)

overwrite_existing_layer = serializers.BooleanField(required=True)
resource_pk = serializers.IntegerField(required=True)
2 changes: 1 addition & 1 deletion geonode/upload/orchestrator.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def get_serializer(self, _data) -> serializers.Serializer:
return _serializer
logger.info("specific serializer not found, fallback on the default one")
is_overwrite_flow = ast.literal_eval(_data.get("overwrite_existing_layer", "False"))
return (OverwriteImporterSerializer if is_overwrite_flow else ImporterSerializer)
return OverwriteImporterSerializer if is_overwrite_flow else ImporterSerializer

def load_handler(self, module_path):
try:
Expand Down

0 comments on commit 51ef4e1

Please sign in to comment.