2022-01-18 15:38:55 +01:00
|
|
|
from django.utils import timezone
|
2022-02-02 15:50:28 +01:00
|
|
|
from rest_framework import serializers
|
2021-06-03 15:22:16 +02:00
|
|
|
|
|
|
|
from ee.models.event_definition import EnterpriseEventDefinition
|
|
|
|
from posthog.api.shared import UserBasicSerializer
|
2022-02-18 17:47:05 +01:00
|
|
|
from posthog.api.tagged_item import TaggedItemSerializerMixin
|
2021-06-03 15:22:16 +02:00
|
|
|
|
|
|
|
|
2022-02-18 17:47:05 +01:00
|
|
|
class EnterpriseEventDefinitionSerializer(TaggedItemSerializerMixin, serializers.ModelSerializer):
|
2021-06-10 01:45:42 +02:00
|
|
|
updated_by = UserBasicSerializer(read_only=True)
|
2022-01-18 15:38:55 +01:00
|
|
|
verified_by = UserBasicSerializer(read_only=True)
|
2021-06-03 15:22:16 +02:00
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = EnterpriseEventDefinition
|
|
|
|
fields = (
|
|
|
|
"id",
|
|
|
|
"name",
|
|
|
|
"owner",
|
|
|
|
"description",
|
|
|
|
"tags",
|
|
|
|
"volume_30_day",
|
|
|
|
"query_usage_30_day",
|
2021-12-08 17:03:34 +01:00
|
|
|
"created_at",
|
2021-06-03 15:22:16 +02:00
|
|
|
"updated_at",
|
|
|
|
"updated_by",
|
2021-12-08 17:03:34 +01:00
|
|
|
"last_seen_at",
|
2022-01-18 15:38:55 +01:00
|
|
|
"verified",
|
|
|
|
"verified_at",
|
|
|
|
"verified_by",
|
2021-06-03 15:22:16 +02:00
|
|
|
)
|
2021-12-08 17:03:34 +01:00
|
|
|
read_only_fields = [
|
|
|
|
"id",
|
|
|
|
"name",
|
|
|
|
"created_at",
|
|
|
|
"updated_at",
|
|
|
|
"volume_30_day",
|
|
|
|
"query_usage_30_day",
|
|
|
|
"last_seen_at",
|
2022-01-18 15:38:55 +01:00
|
|
|
"verified_at",
|
|
|
|
"verified_by",
|
2021-12-08 17:03:34 +01:00
|
|
|
]
|
2021-06-03 15:22:16 +02:00
|
|
|
|
|
|
|
def update(self, event_definition: EnterpriseEventDefinition, validated_data):
|
|
|
|
validated_data["updated_by"] = self.context["request"].user
|
2022-01-18 15:38:55 +01:00
|
|
|
|
|
|
|
if "verified" in validated_data:
|
|
|
|
if validated_data["verified"] and not event_definition.verified:
|
|
|
|
# Verify event only if previously unverified
|
|
|
|
validated_data["verified_by"] = self.context["request"].user
|
|
|
|
validated_data["verified_at"] = timezone.now()
|
|
|
|
validated_data["verified"] = True
|
|
|
|
elif not validated_data["verified"]:
|
|
|
|
# Unverifying event nullifies verified properties
|
|
|
|
validated_data["verified_by"] = None
|
|
|
|
validated_data["verified_at"] = None
|
|
|
|
validated_data["verified"] = False
|
|
|
|
else:
|
|
|
|
# Attempting to re-verify an already verified event, invalid action. Ignore attribute.
|
|
|
|
validated_data.pop("verified")
|
|
|
|
|
2021-06-03 15:22:16 +02:00
|
|
|
return super().update(event_definition, validated_data)
|
2021-06-10 01:45:42 +02:00
|
|
|
|
|
|
|
def to_representation(self, instance):
|
|
|
|
representation = super().to_representation(instance)
|
2022-01-18 15:38:55 +01:00
|
|
|
representation["owner"] = UserBasicSerializer(instance=instance.owner).data if instance.owner else None
|
2021-06-10 01:45:42 +02:00
|
|
|
return representation
|