From 7b519f16bd08b9eaf4cb1d5d9138d4e51f421664 Mon Sep 17 00:00:00 2001 From: Karl Determe Date: Thu, 13 Aug 2026 11:48:32 +0200 Subject: [PATCH] feat: add operation template models and preventive intervention logic with associated tests --- streetup/interventions/models.py | 1 + .../tests/test_preventive_templates.py | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/streetup/interventions/models.py b/streetup/interventions/models.py index 10a3aca..9fbe651 100644 --- a/streetup/interventions/models.py +++ b/streetup/interventions/models.py @@ -1355,6 +1355,7 @@ class OperationTemplate(models.Model): model_name = ct.model.lower() if model_name not in filters: filters[model_name] = set() + filters[model_name].add(entry.asset_model_object_id) return filters if filters else None diff --git a/streetup/interventions/tests/test_preventive_templates.py b/streetup/interventions/tests/test_preventive_templates.py index 6b2cdb9..43e2723 100644 --- a/streetup/interventions/tests/test_preventive_templates.py +++ b/streetup/interventions/tests/test_preventive_templates.py @@ -130,6 +130,27 @@ class OperationTemplateTests(TestCase): self.assertEqual(operations[0].template_group, 'Equipment Check') self.assertEqual(operations[1].template_group, 'Generic Inspection') + def test_get_asset_model_filters(self): + """Test that get_asset_model_filters returns the correct dictionary with asset model IDs.""" + from interventions.models import OperationTemplateAssetModelFilter + from django.contrib.contenttypes.models import ContentType + from common.models import Thematic + + ct = ContentType.objects.get_for_model(Thematic) + + # Create a filter entry + filter_entry = OperationTemplateAssetModelFilter.objects.create( + template=self.equipment_template, + asset_model_content_type=ct, + asset_model_object_id=999 + ) + + filters = self.equipment_template.get_asset_model_filters() + self.assertIsNotNone(filters) + self.assertIn('thematic', filters) + self.assertIn(999, filters['thematic']) + +