oncall-engine/engine/apps/api/serializers/escalation_chain.py
Yulya Artyukhina 58d73742ea
Add openAPI schema for some internal endpoints (#5037)
# What this PR does
Adds openAPI schema for following endpoints:
- /escalation_chain
- /escalation_policy
- /channel_filter
- /user_notification_policy

## Which issue(s) this PR closes

Related to https://github.com/grafana/oncall-private/issues/2457

## Checklist

- [ ] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.

---------

Co-authored-by: Vadim Stepanov <vadimkerr@gmail.com>
2024-10-24 09:24:36 +00:00

40 lines
1.6 KiB
Python

from rest_framework import serializers
from apps.alerts.models import EscalationChain
from common.api_helpers.custom_fields import TeamPrimaryKeyRelatedField
from common.api_helpers.utils import CurrentOrganizationDefault
class EscalationChainSerializer(serializers.ModelSerializer):
id = serializers.CharField(read_only=True, source="public_primary_key")
organization = serializers.HiddenField(default=CurrentOrganizationDefault())
team = TeamPrimaryKeyRelatedField(allow_null=True, required=False)
class Meta:
model = EscalationChain
fields = ("id", "name", "organization", "team")
class EscalationChainListSerializer(EscalationChainSerializer):
number_of_integrations = serializers.SerializerMethodField()
number_of_routes = serializers.SerializerMethodField()
class Meta(EscalationChainSerializer.Meta):
fields = [*EscalationChainSerializer.Meta.fields, "number_of_integrations", "number_of_routes"]
def get_number_of_integrations(self, obj) -> int:
# num_integrations param added in queryset via annotate. Check EscalationChainViewSet.get_queryset
return getattr(obj, "num_integrations", 0)
def get_number_of_routes(self, obj) -> int:
# num_routes param added in queryset via annotate. Check EscalationChainViewSet.get_queryset
return getattr(obj, "num_routes", 0)
class FilterEscalationChainSerializer(serializers.ModelSerializer):
value = serializers.CharField(source="public_primary_key")
display_name = serializers.CharField(source="name")
class Meta:
model = EscalationChain
fields = ["value", "display_name"]