oncall-engine/engine/common/api_helpers/serializers.py
Vadim Stepanov 68605029e4
Make viewset actions more consistent (#2120)
# What this PR does

Makes sure that all viewset actions with `detail=True` use
`self.get_object()` to retrieve an instance that's being acted upon.

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not
required)
2023-06-07 12:10:53 +00:00

17 lines
570 B
Python

from rest_framework import serializers
from rest_framework.request import Request
def get_move_to_position_param(request: Request):
"""
Get "position" parameter from query params + validate it.
Used by actions on ordered models (e.g. move_to_position).
"""
class MoveToPositionQueryParamsSerializer(serializers.Serializer):
position = serializers.IntegerField()
serializer = MoveToPositionQueryParamsSerializer(data=request.query_params)
serializer.is_valid(raise_exception=True)
return serializer.validated_data["position"]