Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ fix:
@pnpm lint-fix

audit-fix:
@pnpm audit --fix
@pnpm audit --fix override

install:
@pnpm install --frozen-lockfile
Expand Down
43 changes: 25 additions & 18 deletions app/workflow_manager/serializers/state.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,6 @@ class Meta(OrcabusIdSerializerMetaMixin):
fields = "__all__"


class StateCreateRequestSerializer(serializers.Serializer):
"""
Schema contract for POST /state.
Request accepts only `status` and `comment`.
"""

status = serializers.CharField(required=True, allow_blank=False)
comment = serializers.CharField(required=True, allow_blank=False)


class StateUpdateRequestSerializer(serializers.Serializer):
"""
Schema contract for PATCH /state/{id}.
Expand All @@ -42,31 +32,48 @@ class StateUpdateRequestSerializer(serializers.Serializer):
comment = serializers.CharField(required=True, allow_blank=False)


class StateBatchTransitionRequestSerializer(serializers.Serializer):
class StateTransitionRequestSerializer(serializers.Serializer):
"""
Schema contract for POST /workflowrun/state/batch-state-transition/.
Request body: workflowrun_orcabus_ids (list or CSV string), status, comment.
Schema contract for POST /workflowrun/state/{transition}/.
The endpoint determines the target state. The request body contains
workflowrunOrcabusIds (list or CSV string) and comment.
"""

workflowrun_orcabus_ids = OrcabusIdListField(
child=serializers.CharField(allow_blank=False),
required=True,
allow_empty=False,
)
status = serializers.CharField(required=True, allow_blank=False)
comment = serializers.CharField(required=True, allow_blank=False)


class StateBatchTransitionFailureSerializer(serializers.Serializer):
class StateTransitionValidationErrorSerializer(serializers.Serializer):
"""Field-level validation errors returned for an invalid transition request."""

workflowrun_orcabus_ids = serializers.ListField(
child=serializers.CharField(),
required=False,
)
comment = serializers.ListField(
child=serializers.CharField(),
required=False,
)
non_field_errors = serializers.ListField(
child=serializers.CharField(),
required=False,
)


class StateTransitionFailureSerializer(serializers.Serializer):
workflowrun_orcabus_id = serializers.CharField()
reason = serializers.CharField()
detail = serializers.CharField()
error = serializers.CharField(required=False)


class StateBatchTransitionResponseSerializer(serializers.Serializer):
class StateTransitionResponseSerializer(serializers.Serializer):
"""
Schema contract for batch-state-transition responses.
Schema contract for workflow-run state transition responses.
JSON responses use camelCase (createdCount, workflowrunOrcabusIds, failedCount).
"""

Expand All @@ -76,7 +83,7 @@ class StateBatchTransitionResponseSerializer(serializers.Serializer):
allow_empty=True,
)
failed_count = serializers.IntegerField(default=0)
failures = StateBatchTransitionFailureSerializer(
failures = StateTransitionFailureSerializer(
many=True,
required=False,
)
Loading
Loading