diff --git a/repair/apps/changes/models/strategies.py b/repair/apps/changes/models/strategies.py index ae33df97b..1cb7fe98b 100644 --- a/repair/apps/changes/models/strategies.py +++ b/repair/apps/changes/models/strategies.py @@ -85,8 +85,7 @@ def trigger_implementationquantity_sii(sender, instance, solution = Solution.objects.get(pk=sii.solution.id) for question in solution.question.all(): new, is_created = ImplementationQuantity.objects.\ - get_or_create(implementation=sii, question=question, - value=0) + get_or_create(implementation=sii, question=question, value=0) if is_created: new.save() @@ -102,8 +101,7 @@ def trigger_implementationarea_sii(sender, instance, for area in solution.possible_implementation_area.all(): new, is_created = ImplementationArea.objects.\ get_or_create(implementation=sii, - possible_implementation_area=area, - geom=None) + possible_implementation_area=area) if is_created: new.save() diff --git a/repair/apps/changes/serializers/solutions.py b/repair/apps/changes/serializers/solutions.py index fde263ce5..0cbac8b01 100644 --- a/repair/apps/changes/serializers/solutions.py +++ b/repair/apps/changes/serializers/solutions.py @@ -9,6 +9,8 @@ from repair.apps.changes.models import (SolutionCategory, Solution, ImplementationQuestion, + SolutionInStrategy, + ImplementationQuantity, SolutionPart, AffectedFlow, PossibleImplementationArea, @@ -338,6 +340,7 @@ def update(self, instance, validated_data): affected_flows = validated_data.pop('affected_flows', None) flow_reference = validated_data.pop('flow_reference', None) flow_changes = validated_data.pop('flow_changes', None) + question = validated_data.pop('question', None) instance = super().update(instance, validated_data) if flow_reference: if instance.flow_reference: @@ -356,6 +359,24 @@ def update(self, instance, validated_data): for f in affected_flows: flow = AffectedFlow(solution_part=instance, **f) flow.save() + if question: + implementations = SolutionInStrategy.objects.filter( + solution=instance.solution) + for implementation in implementations: + ex = ImplementationQuantity.objects.filter( + implementation=implementation, question=question) + # create if not existing (in case questions were added after + # creation the implementation by user) + if len(ex) != 1: + # workaround: old code produced duplicate quantities, + # remove duplicates + ex.delete() + new = ImplementationQuantity( + implementation=implementation, + question=question, + value=0 + ) + new.save() instance.save() return instance diff --git a/repair/js/views/strategy/setup-solution-part.js b/repair/js/views/strategy/setup-solution-part.js index 57b8fe125..3d3d40973 100644 --- a/repair/js/views/strategy/setup-solution-part.js +++ b/repair/js/views/strategy/setup-solution-part.js @@ -411,6 +411,7 @@ var SolutionPartView = BaseView.extend( this.hasQuestion = (question != null); question = this.questions.get(question); this.isAbsolute = (this.hasQuestion) ? question.get('is_absolute'): this.model.get('is_absolute'); + if (this.scheme.toLowerCase() == 'new') this.isAbsolute = true; var questValue = (this.hasQuestion) ? 'true': 'false'; this.hasQuestionRadios.forEach(function(radio){