Skip to content

Commit

Permalink
🐛 Add function specially for reports trigger, fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
LePetitTim committed Jan 25, 2023
1 parent b99cff2 commit 7106fe7
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 8 deletions.
6 changes: 3 additions & 3 deletions geotrek/maintenance/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 1 addition & 2 deletions geotrek/maintenance/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 '<i>' + _('Deleted') + ':</i><img src="%simages/%s-16.png"> <i>%s<i/>' % (settings.STATIC_URL, icon, title)
if not model._meta.model_name == "topology":
title = self.target.name_display
icon = model._meta.model_name
return '<img src="%simages/%s-16.png"> %s' % (settings.STATIC_URL,
icon,
title)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
5 changes: 3 additions & 2 deletions geotrek/maintenance/tests/test_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 7106fe7

Please sign in to comment.