Skip to content

Commit

Permalink
[Hardening] Make 'set_all_layers_metadata' management command more ro…
Browse files Browse the repository at this point in the history
…bust
  • Loading branch information
afabiani committed Sep 17, 2019
1 parent 8e20c82 commit 823d8d6
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 19 deletions.
6 changes: 3 additions & 3 deletions geonode/base/management/commands/set_all_layers_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def add_arguments(self, parser):
'--remove-duplicates',
action='store_true',
dest='remove_duplicates',
default=True,
default=False,
help='Remove duplicates first.'
)
parser.add_argument(
Expand Down Expand Up @@ -104,8 +104,8 @@ def handle(self, *args, **options):
# refresh catalogue metadata records
catalogue_post_save(instance=layer, sender=layer.__class__)
except BaseException as e:
# import traceback
# traceback.print_exc()
import traceback
traceback.print_exc()
if ignore_errors:
print "[ERROR] Layer [%s] couldn't be updated" % (layer.name)
else:
Expand Down
24 changes: 17 additions & 7 deletions geonode/catalogue/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,23 @@ def catalogue_post_save(instance, sender, **kwargs):

# Create the different metadata links with the available formats
for mime, name, metadata_url in record.links['metadata']:
Link.objects.get_or_create(resource=instance.resourcebase_ptr,
url=metadata_url,
defaults=dict(name=name,
extension='xml',
mime=mime,
link_type='metadata')
)
try:
Link.objects.get_or_create(resource=instance.resourcebase_ptr,
url=metadata_url,
defaults=dict(name=name,
extension='xml',
mime=mime,
link_type='metadata')
)
except Link.MultipleObjectsReturned:
_d = dict(name=name,
extension='xml',
mime=mime,
link_type='metadata')
Link.objects.filter(resource=instance.resourcebase_ptr,
url=metadata_url,
extension='xml',
link_type='metadata').update(**_d)

# generate an XML document (GeoNode's default is ISO)
if instance.metadata_uploaded and instance.metadata_uploaded_preserve:
Expand Down
27 changes: 18 additions & 9 deletions geonode/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -1627,16 +1627,25 @@ def set_resource_default_links(instance, layer, prune=False, **kwargs):
width)

for ext, name, mime, wms_url in links:
Link.objects.update_or_create(
resource=instance.resourcebase_ptr,
name=ugettext(name),
defaults=dict(
extension=ext,
url=wms_url,
mime=mime,
link_type='image',
try:
Link.objects.update_or_create(
resource=instance.resourcebase_ptr,
name=ugettext(name),
defaults=dict(
extension=ext,
url=wms_url,
mime=mime,
link_type='image',
)
)
)
except Link.MultipleObjectsReturned:
_d = dict(extension=ext,
url=wms_url,
mime=mime,
link_type='image')
Link.objects.filter(resource=instance.resourcebase_ptr,
name=ugettext(name),
link_type='image').update(**_d)

if instance.storeType == "dataStore":
links = wfs_links(ogc_server_settings.public_url + 'ows?',
Expand Down

0 comments on commit 823d8d6

Please sign in to comment.