Newer
Older
"""
import logging
from uuid import uuid4
from django.apps import apps
from django.db.models.signals import post_save
from django.dispatch import receiver
from onegeo_suite.contrib.onegeo_dataset.models import Dataset
from onegeo_suite.contrib.onegeo_resource.models import Resource
from onegeo_suite.contrib.onegeo_geospatial.models import GeographicLayer
from onegeo_suite.contrib.onegeo_geospatial.models import RasterLayer
from onegeo_suite.contrib.onegeo_geospatial.models import VectorLayer
from onegeo_suite.contrib.onegeo_geospatial.models import UnknownLayer
logger = logging.getLogger(__name__)
CKAN_ID_KEY = 'ckan_id'
@receiver(post_save, sender=Dataset)
@receiver(post_save, sender=Resource)
def add_extra_kvp(sender, instance, created=None, **kwargs):
if created:
app_label = sender._meta.app_label
model_name = sender._meta.model_name
Extra = apps.get_model(app_label=app_label, model_name='Extra')
attrs = {
model_name: instance,
'key': CKAN_ID_KEY,
'value': uuid4().__str__(),
}
Extra.objects.create(**attrs)
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
@receiver(post_save, sender=VectorLayer)
@receiver(post_save, sender=RasterLayer)
@receiver(post_save, sender=UnknownLayer)
@receiver(post_save, sender=GeographicLayer)
def add_extra_resource_ckan_uuid(sender, instance, created=None, **kwargs):
Extra = apps.get_model(app_label='onegeo_geospatial', model_name='Extra')
key = f'{CKAN_ID_KEY}_resource_wms'
attrs = {
'geographiclayer': instance,
'key': key,
'value': uuid4().__str__(),
}
if not Extra.objects.filter(geographiclayer=instance, key=key).exists():
Extra.objects.create(**attrs)
if instance.raster:
key = f'{CKAN_ID_KEY}_resource_wcs'
attrs = {
'geographiclayer': instance,
'key': key,
'value': uuid4().__str__(),
}
if not Extra.objects.filter(geographiclayer=instance, key=key).exists():
Extra.objects.create(**attrs)
if instance.vector:
key = f'{CKAN_ID_KEY}_resource_wfs'
attrs = {
'geographiclayer': instance,
'key': key,
'value': uuid4().__str__(),
}
if not Extra.objects.filter(geographiclayer=instance, key=key).exists():
Extra.objects.create(**attrs)