def delete_feature(sender, instance, **kwargs): if app_settings.GEOSTORE_RELATION_CELERY_ASYNC: kwargs['relation_id'] = None kwargs.pop('signal') features = [] for relation_destination in instance.layer.relations_as_destination.all(): features.extend(relation_destination.origin.features.values_list('id', flat=True)) execute_async_func(feature_update_relations_origins, (features, kwargs))
def update_topologies_near_feature(sender, instance, **kwargs): """ Launch topology updates near feature on routable layers """ if instance.layer.routable: args = (instance.layer_id, instance.geom.ewkt) execute_async_func(feature_update_routing, args)\ if app_settings.GEOSTORE_ROUTING_CELERY_ASYNC \ else feature_update_routing(*args)
def execute_async_save(update_fields, instance, kwargs): # update_fields=None (most of the time) .save() # update_fields=['geom', 'properties] => update everything if update_fields is None or 'geom' in update_fields: execute_async_func(feature_update_relations_and_properties, (instance.pk, kwargs)) # update_fields=['properties'] => update only relations properties elif "properties" in update_fields: execute_async_func(feature_update_destination_properties, (instance.pk, kwargs))
def save_layer_relation(sender, instance, **kwargs): if app_settings.GEOSTORE_RELATION_CELERY_ASYNC: execute_async_func(layer_relations_set_destinations, (instance.pk,))
def save_feature(sender, instance, **kwargs): if app_settings.GEOSTORE_RELATION_CELERY_ASYNC: execute_async_func(feature_update_relations_destinations, (instance.pk,))