diff --git a/geotrek/maintenance/filters.py b/geotrek/maintenance/filters.py
index 61deb1d4d1..fe7758583d 100644
--- a/geotrek/maintenance/filters.py
+++ b/geotrek/maintenance/filters.py
@@ -62,9 +62,9 @@ def filter(self, qs, values):
if 'geotrek.signage' in settings.INSTALLED_APPS:
blades = list(Blade.objects.filter(signage__in=signages).values_list('id', flat=True))
- blades_intervention = Intervention.objects.existing().filter(target_id__in=blades,
- target_type=blade_content_type).values_list('id',
- flat=True)
+ blades_intervention = Intervention.objects.filter(target_id__in=blades,
+ target_type=blade_content_type).values_list('id',
+ flat=True)
interventions.extend(blades_intervention)
qs = qs.filter(pk__in=interventions).existing()
return qs
diff --git a/geotrek/maintenance/models.py b/geotrek/maintenance/models.py
index dd811dddc4..7fa98e7d62 100755
--- a/geotrek/maintenance/models.py
+++ b/geotrek/maintenance/models.py
@@ -132,14 +132,13 @@ def target_display(self):
title = _('Paths')
if self.target_type:
model = self.target_type.model_class()
- if not model._meta.model_name == "topology":
- icon = model._meta.model_name
if not self.target:
title = model._meta.verbose_name + f' {self.target_id}'
return '' + _('Deleted') + ':
%s' % (settings.STATIC_URL, icon, title)
if not model._meta.model_name == "topology":
title = self.target.name_display
+ icon = model._meta.model_name
return '
%s' % (settings.STATIC_URL,
icon,
title)
diff --git a/geotrek/maintenance/templates/maintenance/sql/post_10_interventions.sql b/geotrek/maintenance/templates/maintenance/sql/post_10_interventions.sql
index 4884da7a6e..91f1a61309 100644
--- a/geotrek/maintenance/templates/maintenance/sql/post_10_interventions.sql
+++ b/geotrek/maintenance/templates/maintenance/sql/post_10_interventions.sql
@@ -25,6 +25,13 @@ BEGIN
END;
$$ LANGUAGE plpgsql;
+CREATE FUNCTION {{ schema_geotrek }}.delete_related_intervention_report() RETURNS trigger SECURITY DEFINER AS $$
+BEGIN
+ UPDATE maintenance_intervention SET deleted = NEW.deleted WHERE target_id = NEW.id AND target_type_id IN (SELECT id FROM django_content_type AS ct WHERE ct.model = 'report');
+ RETURN NULL;
+END;
+$$ LANGUAGE plpgsql;
+
CREATE FUNCTION {{ schema_geotrek }}.delete_related_intervention_blade() RETURNS trigger SECURITY DEFINER AS $$
BEGIN
UPDATE maintenance_intervention SET deleted = NEW.deleted WHERE target_id = NEW.id AND target_type_id IN (SELECT id FROM django_content_type AS ct WHERE ct.model = 'blade');
@@ -39,7 +46,7 @@ FOR EACH ROW EXECUTE PROCEDURE delete_related_intervention();
CREATE TRIGGER maintenance_report_interventions_d_tgr
AFTER UPDATE OF deleted ON feedback_report
-FOR EACH ROW EXECUTE PROCEDURE delete_related_intervention();
+FOR EACH ROW EXECUTE PROCEDURE delete_related_intervention_report();
-------------------------------------------------------------------------------
-- Denormalized altimetry information
diff --git a/geotrek/maintenance/templates/maintenance/sql/pre_10_cleanup.sql b/geotrek/maintenance/templates/maintenance/sql/pre_10_cleanup.sql
index f54fdd4d50..b35808292c 100644
--- a/geotrek/maintenance/templates/maintenance/sql/pre_10_cleanup.sql
+++ b/geotrek/maintenance/templates/maintenance/sql/pre_10_cleanup.sql
@@ -6,6 +6,7 @@ DROP FUNCTION IF EXISTS update_altimetry_topology_intervention() CASCADE;
DROP FUNCTION IF EXISTS update_altimetry_intervention() CASCADE;
DROP FUNCTION IF EXISTS update_area_intervention() CASCADE;
DROP FUNCTION IF EXISTS delete_related_intervention_blade() CASCADE;
+DROP FUNCTION IF EXISTS delete_related_intervention_report() CASCADE;
-- 20
diff --git a/geotrek/maintenance/tests/test_filters.py b/geotrek/maintenance/tests/test_filters.py
index 9889479cb8..f2b9ec4d2a 100644
--- a/geotrek/maintenance/tests/test_filters.py
+++ b/geotrek/maintenance/tests/test_filters.py
@@ -303,13 +303,14 @@ def setUpTestData(cls):
cls.course_in_2 = CourseFactory.create(parent_sites=[cls.site_in_2.pk],
geom=GeometryCollection(Point(5, 5), srid=settings.SRID))
+ print(cls.course_in_2, cls.course_in_2.geom)
cls.intervention_course_in_2 = InterventionFactory.create(target=cls.course_in_2)
-
+ print(cls.intervention_site_in_1, cls.intervention_course_in_2)
cls.report_in_1 = ReportFactory.create(geom=Point(1, 1, srid=settings.SRID))
cls.intervention_report_in_1 = InterventionFactory.create(target=cls.report_in_1)
cls.report_in_2 = ReportFactory.create(geom=Point(5, 5, srid=settings.SRID))
- cls.intervention_report_in_2 = InterventionFactory.create(target=cls.site_in_2)
+ cls.intervention_report_in_2 = InterventionFactory.create(target=cls.report_in_2)
report_deleted = ReportFactory.create(geom=Point(1, 1, srid=settings.SRID))
cls.intervention_report_deleted = InterventionFactory.create(target=report_deleted)