Skip to content

Commit 8514c16

Browse files
mattiagiupponigiohappy
authored andcommitted
Minor fix on upload workflow
1 parent 3b0c16e commit 8514c16

File tree

7 files changed

+23
-7
lines changed

7 files changed

+23
-7
lines changed

geonode/upload/api/serializer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from geonode.base.api.serializers import BaseDynamicModelSerializer
2222
from geonode.base.models import ResourceBase
2323
from geonode.upload.models import UploadParallelismLimit, UploadSizeLimit
24+
from geonode.resource.enumerator import ExecutionRequestAction as exa
2425

2526

2627
class ImporterSerializer(DynamicModelSerializer):
@@ -42,7 +43,7 @@ class Meta:
4243
sld_file = serializers.FileField(required=False)
4344
store_spatial_files = serializers.BooleanField(required=False, default=True)
4445
skip_existing_layers = serializers.BooleanField(required=False, default=False)
45-
action = serializers.CharField(required=True)
46+
action = serializers.CharField(required=False, default=exa.UPLOAD.value)
4647

4748

4849
class OverwriteImporterSerializer(ImporterSerializer):

geonode/upload/handlers/common/serializer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from rest_framework import serializers
2020
from dynamic_rest.serializers import DynamicModelSerializer
2121
from geonode.base.models import ResourceBase
22+
from geonode.resource.enumerator import ExecutionRequestAction as exa
2223

2324

2425
class RemoteResourceSerializer(DynamicModelSerializer):
@@ -34,6 +35,6 @@ class Meta:
3435
required=True,
3536
help_text="Remote resource type, for example wms or 3dtiles. Is used by the handler to understand if can handle the resource",
3637
)
37-
action = serializers.CharField(required=True)
38+
action = serializers.CharField(required=False, default=exa.UPLOAD.value)
3839

3940
overwrite_existing_layer = serializers.BooleanField(required=False, default=False)

geonode/upload/handlers/common/vector.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,12 @@ def setup_dynamic_model(
612612
"is_dynamic_model_managed", False
613613
)
614614
workspace = DataPublisher(None).workspace
615-
user_datasets = Dataset.objects.filter(owner=username, alternate__iexact=f"{workspace.name}:{layer_name}")
615+
616+
if resource_pk := orchestrator.get_execution_object(execution_id).input_params.get("resource_pk", None):
617+
user_datasets = Dataset.objects.filter(owner=username, pk=resource_pk)
618+
else:
619+
user_datasets = Dataset.objects.filter(owner=username, alternate__iexact=f"{workspace.name}:{layer_name}")
620+
616621
dynamic_schema = ModelSchema.objects.filter(name__iexact=layer_name)
617622

618623
dynamic_schema_exists = dynamic_schema.exists()
@@ -624,6 +629,7 @@ def setup_dynamic_model(
624629
we just take the dynamic_model to overwrite the existing one
625630
"""
626631
dynamic_schema = dynamic_schema.get()
632+
layer_name = user_datasets.first().alternate.split(":")[-1]
627633
elif not dataset_exists and not dynamic_schema_exists:
628634
"""
629635
cames here when is a new brand upload or when (for any reasons) the dataset exists but the
@@ -687,14 +693,15 @@ def create_dynamic_model_fields(
687693

688694
# definition of the celery group needed to run the async workflow.
689695
# in this way each task of the group will handle only 30 field
696+
layer_name = layer.GetName() if not isinstance(layer, str) else layer_name
690697
celery_group = group(
691698
create_dynamic_structure.s(
692699
execution_id,
693700
schema,
694701
dynamic_model_schema.id,
695702
overwrite,
696703
layer_name,
697-
layer_key=create_layer_key(layer.GetName(), str(execution_id)),
704+
layer_key=create_layer_key(layer_name, str(execution_id)),
698705
)
699706
for schema in list_chunked
700707
)

geonode/upload/handlers/empty_dataset/serializer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#########################################################################
1919
from rest_framework import serializers
2020
from dynamic_rest.serializers import DynamicModelSerializer
21+
from geonode.resource.enumerator import ExecutionRequestAction as exa
2122

2223
from geonode.base.models import ResourceBase
2324

@@ -32,6 +33,6 @@ class Meta:
3233
title = serializers.CharField()
3334
geom = serializers.CharField()
3435
attributes = serializers.JSONField()
35-
action = serializers.CharField(required=True)
36+
action = serializers.CharField(required=False, default=exa.CREATE.value)
3637
is_empty = serializers.BooleanField(default=True, read_only=True, required=False)
3738
is_dynamic_model_managed = serializers.BooleanField(default=True, read_only=True, required=False)

geonode/upload/handlers/shapefile/serializer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from rest_framework import serializers
2020
from dynamic_rest.serializers import DynamicModelSerializer
2121
from geonode.base.models import ResourceBase
22+
from geonode.resource.enumerator import ExecutionRequestAction as exa
2223

2324

2425
class ShapeFileSerializer(DynamicModelSerializer):
@@ -48,7 +49,7 @@ class Meta:
4849
store_spatial_files = serializers.BooleanField(required=False, default=True)
4950
overwrite_existing_layer = serializers.BooleanField(required=False, default=False)
5051
skip_existing_layers = serializers.BooleanField(required=False, default=False)
51-
action = serializers.CharField(required=True)
52+
action = serializers.CharField(required=False, default=exa.UPLOAD.value)
5253

5354

5455
class OverwriteShapeFileSerializer(ShapeFileSerializer):

geonode/upload/handlers/tiles3d/handler.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,10 @@ def create_geonode_resource(
276276

277277
return resource
278278

279+
def create_asset_and_link(self, resource, files, action=None, asset_name=None, asset_type=None, **kwargs):
280+
if asset_type and kwargs.get("extension", None):
281+
return super().create_asset_and_link(resource, files, action, asset_name, asset_type, **kwargs)
282+
279283
def generate_resource_payload(self, layer_name, alternate, asset, _exec, workspace):
280284
return dict(
281285
resource_type="dataset",

geonode/upload/handlers/xml/serializer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#########################################################################
1919
from rest_framework import serializers
2020
from dynamic_rest.serializers import DynamicModelSerializer
21+
from geonode.resource.enumerator import ExecutionRequestAction as exa
2122

2223
from geonode.base.models import ResourceBase
2324

@@ -32,4 +33,4 @@ class Meta:
3233
base_file = serializers.FileField()
3334
overwrite_existing_layer = serializers.BooleanField(required=False, default=True)
3435
resource_pk = serializers.IntegerField(required=True)
35-
action = serializers.CharField(required=True)
36+
action = serializers.CharField(required=False, default=exa.UPLOAD.value)

0 commit comments

Comments
 (0)