adding
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
class TelemetryEventSerializer(serializers.Serializer):
|
||||
"""یک رویدادِ خام از اپ — نوعاش تعیین میکند کدام فیلدها معنی دارند.
|
||||
عمداً یک سریالایزرِ آزاد (نه یکی برای هر مدل) چون این اندپوینت دستهای
|
||||
(batch) کار میکند و ترکیبِ چند نوع رویداد را با هم میگیرد."""
|
||||
|
||||
type = serializers.ChoiceField(
|
||||
choices=["session_start", "session_end", "page_view", "click", "error"]
|
||||
)
|
||||
at = serializers.DateTimeField()
|
||||
screen = serializers.CharField(max_length=150, required=False, allow_blank=True, default="")
|
||||
duration_seconds = serializers.FloatField(required=False, allow_null=True, default=None)
|
||||
element = serializers.CharField(max_length=150, required=False, allow_blank=True, default="")
|
||||
x = serializers.FloatField(required=False, allow_null=True, default=None)
|
||||
y = serializers.FloatField(required=False, allow_null=True, default=None)
|
||||
message = serializers.CharField(required=False, allow_blank=True, default="")
|
||||
stack = serializers.CharField(required=False, allow_blank=True, default="")
|
||||
|
||||
|
||||
class TelemetryBatchSerializer(serializers.Serializer):
|
||||
session_id = serializers.CharField(max_length=36)
|
||||
platform = serializers.CharField(max_length=30, required=False, allow_blank=True, default="")
|
||||
app_version = serializers.CharField(max_length=30, required=False, allow_blank=True, default="")
|
||||
events = TelemetryEventSerializer(many=True)
|
||||
|
||||
def validate_events(self, value):
|
||||
if not value:
|
||||
raise serializers.ValidationError("حداقل یک رویداد لازم است.")
|
||||
return value
|
||||
Reference in New Issue
Block a user