2022-06-03 08:09:47 -06:00
|
|
|
from rest_framework import serializers
|
2022-06-17 15:34:59 +03:00
|
|
|
from rest_framework.validators import UniqueTogetherValidator
|
2022-06-03 08:09:47 -06:00
|
|
|
|
2023-08-22 14:05:52 -06:00
|
|
|
from apps.public_api.serializers.webhooks import WebhookCreateSerializer, WebhookTriggerTypeField
|
|
|
|
|
from apps.webhooks.models import Webhook
|
2022-06-03 08:09:47 -06:00
|
|
|
from common.api_helpers.custom_fields import TeamPrimaryKeyRelatedField
|
2023-08-22 14:05:52 -06:00
|
|
|
from common.api_helpers.utils import CurrentTeamDefault
|
2022-06-03 08:09:47 -06:00
|
|
|
|
|
|
|
|
|
2023-08-22 14:05:52 -06:00
|
|
|
class ActionCreateSerializer(WebhookCreateSerializer):
|
|
|
|
|
team_id = TeamPrimaryKeyRelatedField(allow_null=True, default=CurrentTeamDefault(), source="team")
|
2023-09-26 08:54:41 -06:00
|
|
|
user = serializers.CharField(required=False, source="username", allow_null=True, allow_blank=True)
|
2023-08-22 14:05:52 -06:00
|
|
|
trigger_type = WebhookTriggerTypeField(required=False)
|
|
|
|
|
forward_whole_payload = serializers.BooleanField(required=False, source="forward_all")
|
2022-06-03 08:09:47 -06:00
|
|
|
|
|
|
|
|
class Meta:
|
2023-08-22 14:05:52 -06:00
|
|
|
model = Webhook
|
2022-06-03 08:09:47 -06:00
|
|
|
fields = [
|
|
|
|
|
"id",
|
|
|
|
|
"name",
|
2023-08-22 14:05:52 -06:00
|
|
|
"is_webhook_enabled",
|
2022-06-17 15:34:59 +03:00
|
|
|
"organization",
|
2022-06-03 08:09:47 -06:00
|
|
|
"team_id",
|
2023-08-22 14:05:52 -06:00
|
|
|
"user",
|
2022-06-17 15:34:59 +03:00
|
|
|
"data",
|
|
|
|
|
"password",
|
|
|
|
|
"authorization_header",
|
2023-08-22 14:05:52 -06:00
|
|
|
"trigger_template",
|
|
|
|
|
"headers",
|
|
|
|
|
"url",
|
2022-06-17 15:34:59 +03:00
|
|
|
"forward_whole_payload",
|
2023-08-22 14:05:52 -06:00
|
|
|
"http_method",
|
|
|
|
|
"trigger_type",
|
|
|
|
|
"integration_filter",
|
2022-06-03 08:09:47 -06:00
|
|
|
]
|
2022-06-17 15:34:59 +03:00
|
|
|
extra_kwargs = {
|
|
|
|
|
"name": {"required": True, "allow_null": False, "allow_blank": False},
|
2023-08-22 14:05:52 -06:00
|
|
|
"url": {"required": True, "allow_null": False, "allow_blank": False},
|
2023-09-26 08:54:41 -06:00
|
|
|
"data": {"required": False, "allow_null": True, "allow_blank": True},
|
|
|
|
|
"password": {"required": False, "allow_null": True, "allow_blank": True},
|
|
|
|
|
"authorization_header": {"required": False, "allow_null": True, "allow_blank": True},
|
|
|
|
|
"trigger_template": {"required": False, "allow_null": True, "allow_blank": True},
|
|
|
|
|
"headers": {"required": False, "allow_null": True, "allow_blank": True},
|
|
|
|
|
"integration_filter": {"required": False, "allow_null": True},
|
2022-06-17 15:34:59 +03:00
|
|
|
}
|
|
|
|
|
|
2023-08-22 14:05:52 -06:00
|
|
|
validators = [UniqueTogetherValidator(queryset=Webhook.objects.all(), fields=["name", "organization"])]
|
2022-06-17 15:34:59 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class ActionUpdateSerializer(ActionCreateSerializer):
|
2023-10-03 08:33:05 -06:00
|
|
|
user = serializers.CharField(required=False, source="username", allow_null=True, allow_blank=True)
|
2023-08-22 14:05:52 -06:00
|
|
|
trigger_type = WebhookTriggerTypeField(required=False)
|
|
|
|
|
forward_whole_payload = serializers.BooleanField(required=False, source="forward_all")
|
2022-06-17 15:34:59 +03:00
|
|
|
|
|
|
|
|
class Meta(ActionCreateSerializer.Meta):
|
|
|
|
|
extra_kwargs = {
|
|
|
|
|
"name": {"required": False, "allow_null": False, "allow_blank": False},
|
2023-08-22 14:05:52 -06:00
|
|
|
"is_webhook_enabled": {"required": False, "allow_null": False},
|
2023-09-26 08:54:41 -06:00
|
|
|
"user": {"required": False, "allow_null": True, "allow_blank": True},
|
|
|
|
|
"password": {"required": False, "allow_null": True, "allow_blank": True},
|
|
|
|
|
"authorization_header": {"required": False, "allow_null": True, "allow_blank": True},
|
|
|
|
|
"trigger_template": {"required": False, "allow_null": True, "allow_blank": True},
|
|
|
|
|
"headers": {"required": False, "allow_null": True, "allow_blank": True},
|
2023-08-22 14:05:52 -06:00
|
|
|
"url": {"required": False, "allow_null": False, "allow_blank": False},
|
2023-09-26 08:54:41 -06:00
|
|
|
"data": {"required": False, "allow_null": True, "allow_blank": True},
|
2023-08-22 14:05:52 -06:00
|
|
|
"http_method": {"required": False, "allow_null": False, "allow_blank": False},
|
|
|
|
|
"integration_filter": {"required": False, "allow_null": True},
|
2022-06-17 15:34:59 +03:00
|
|
|
}
|