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)