diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py index bdac1be7afd25ad33151b61e1f07a615d95876e9..b3886b56d53e8ec5022353f100001b4fc28e8486 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py @@ -598,22 +598,24 @@ class SchedulingUnitDraftTriggerViewSet(SchedulingUnitDraftViewSet): # --- logger.info("received trigger for project name=%s and created SchedulingUnitDraft pk=%s" % (serializer.instance.project.name, serializer.instance.pk)) + if not serializer.instance.project.can_trigger: + content = {'Error': 'Project %s does not allow triggers' % serializer.instance.project} + logger.warning(content) + return Response(content, status=status.HTTP_403_FORBIDDEN) + # check if we have a url parameter 'test=false' that flags this a real observation test_str = request.GET.get('test', 'true') is_test = test_str.lower() not in ['false'] # if we have a real trigger, carve things in stone, so the dynamic scheduler picks it up - if not is_test: + if is_test: + logger.info("triggered SchedulingUnitDraft pk=%s is a test" % serializer.instance.pk) + else: logger.info("triggered SchedulingUnitDraft pk=%s is an actual trigger (not a test)" % serializer.instance.pk) - if not serializer.instance.project.can_trigger: - content = {'Error': 'Project %s does not allow triggers' % serializer.instance.project} - logger.warning(content) - return Response(content, status=status.HTTP_403_FORBIDDEN) # todo: should we raise this even for tests? + # todo: check trigger quota / account for the used trigger? self.create_blueprints_and_subtasks(request, pk=serializer.instance.pk) logger.info("created blueprint and subtasks for triggered SchedulingUnitDraft pk=%s" % serializer.instance.pk) - else: - logger.info("triggered SchedulingUnitDraft pk=%s is a test" % serializer.instance.pk) draft = serializer.instance draft.refresh_from_db()