205 lines
6.6 KiB
Python
205 lines
6.6 KiB
Python
"""
|
|
Mobile API Serializers für React Native
|
|
"""
|
|
|
|
from rest_framework import serializers
|
|
from .models import MobileDevice, PushNotification, OfflineSync, MobileAnalytics, MobileSession, MobileError, MobileCache
|
|
|
|
|
|
class MobileDeviceSerializer(serializers.ModelSerializer):
|
|
"""Mobile Device Serializer"""
|
|
|
|
class Meta:
|
|
model = MobileDevice
|
|
fields = [
|
|
'id', 'device_token', 'device_type', 'device_name',
|
|
'device_model', 'os_version', 'app_version', 'is_active',
|
|
'last_seen', 'created_at'
|
|
]
|
|
read_only_fields = ['id', 'created_at']
|
|
|
|
|
|
class PushNotificationSerializer(serializers.ModelSerializer):
|
|
"""Push Notification Serializer"""
|
|
|
|
class Meta:
|
|
model = PushNotification
|
|
fields = [
|
|
'id', 'notification_type', 'title', 'message', 'data',
|
|
'sent_at', 'delivered_at', 'opened_at', 'is_sent',
|
|
'is_delivered', 'is_opened'
|
|
]
|
|
read_only_fields = ['id', 'sent_at']
|
|
|
|
|
|
class OfflineSyncSerializer(serializers.ModelSerializer):
|
|
"""Offline Sync Serializer"""
|
|
|
|
class Meta:
|
|
model = OfflineSync
|
|
fields = [
|
|
'id', 'sync_type', 'data', 'status', 'error_message',
|
|
'created_at', 'synced_at'
|
|
]
|
|
read_only_fields = ['id', 'created_at']
|
|
|
|
|
|
class MobileAnalyticsSerializer(serializers.ModelSerializer):
|
|
"""Mobile Analytics Serializer"""
|
|
|
|
class Meta:
|
|
model = MobileAnalytics
|
|
fields = [
|
|
'id', 'event_type', 'event_data', 'session_id',
|
|
'screen_name', 'timestamp'
|
|
]
|
|
read_only_fields = ['id', 'timestamp']
|
|
|
|
|
|
class MobileSessionSerializer(serializers.ModelSerializer):
|
|
"""Mobile Session Serializer"""
|
|
|
|
class Meta:
|
|
model = MobileSession
|
|
fields = [
|
|
'id', 'session_id', 'started_at', 'ended_at',
|
|
'duration', 'is_active'
|
|
]
|
|
read_only_fields = ['id', 'started_at']
|
|
|
|
|
|
class MobileErrorSerializer(serializers.ModelSerializer):
|
|
"""Mobile Error Serializer"""
|
|
|
|
class Meta:
|
|
model = MobileError
|
|
fields = [
|
|
'id', 'error_level', 'error_type', 'error_message',
|
|
'stack_trace', 'app_version', 'os_version', 'device_info',
|
|
'created_at', 'is_resolved'
|
|
]
|
|
read_only_fields = ['id', 'created_at']
|
|
|
|
|
|
class MobileCacheSerializer(serializers.ModelSerializer):
|
|
"""Mobile Cache Serializer"""
|
|
|
|
class Meta:
|
|
model = MobileCache
|
|
fields = [
|
|
'id', 'cache_type', 'cache_key', 'cache_data',
|
|
'expires_at', 'created_at', 'updated_at'
|
|
]
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
|
|
# Mobile-optimierte Produkt Serializer
|
|
class MobileProductSerializer(serializers.Serializer):
|
|
"""Mobile-optimierter Produkt Serializer"""
|
|
|
|
id = serializers.UUIDField()
|
|
name = serializers.CharField()
|
|
description = serializers.CharField()
|
|
price = serializers.DecimalField(max_digits=10, decimal_places=2)
|
|
image_url = serializers.CharField()
|
|
category = serializers.CharField()
|
|
fursuit_type = serializers.CharField()
|
|
featured = serializers.BooleanField()
|
|
created_at = serializers.DateTimeField()
|
|
|
|
# Mobile-spezifische Felder
|
|
is_favorite = serializers.BooleanField(default=False)
|
|
in_cart = serializers.BooleanField(default=False)
|
|
cart_quantity = serializers.IntegerField(default=0)
|
|
|
|
|
|
# Mobile-optimierter Auction Serializer
|
|
class MobileAuctionSerializer(serializers.Serializer):
|
|
"""Mobile-optimierter Auction Serializer"""
|
|
|
|
id = serializers.UUIDField()
|
|
title = serializers.CharField()
|
|
description = serializers.CharField()
|
|
fursuit_type = serializers.CharField()
|
|
starting_bid = serializers.DecimalField(max_digits=10, decimal_places=2)
|
|
current_bid = serializers.DecimalField(max_digits=10, decimal_places=2)
|
|
status = serializers.CharField()
|
|
end_time = serializers.DateTimeField()
|
|
time_remaining = serializers.CharField()
|
|
total_bids = serializers.IntegerField()
|
|
is_watching = serializers.BooleanField(default=False)
|
|
created_at = serializers.DateTimeField()
|
|
|
|
|
|
# Mobile API Response Serializer
|
|
class MobileApiResponseSerializer(serializers.Serializer):
|
|
"""Standard Mobile API Response"""
|
|
|
|
success = serializers.BooleanField()
|
|
data = serializers.JSONField()
|
|
message = serializers.CharField(required=False)
|
|
error = serializers.CharField(required=False)
|
|
timestamp = serializers.DateTimeField()
|
|
|
|
|
|
# Mobile Push Notification Payload Serializer
|
|
class PushNotificationPayloadSerializer(serializers.Serializer):
|
|
"""Push Notification Payload für Firebase/APNS"""
|
|
|
|
notification = serializers.DictField()
|
|
data = serializers.DictField()
|
|
android = serializers.DictField(required=False)
|
|
apns = serializers.DictField(required=False)
|
|
webpush = serializers.DictField(required=False)
|
|
|
|
|
|
# Mobile Analytics Event Serializer
|
|
class MobileAnalyticsEventSerializer(serializers.Serializer):
|
|
"""Mobile Analytics Event"""
|
|
|
|
event_type = serializers.CharField()
|
|
event_data = serializers.DictField()
|
|
session_id = serializers.CharField(required=False)
|
|
screen_name = serializers.CharField(required=False)
|
|
timestamp = serializers.DateTimeField()
|
|
device_info = serializers.DictField(required=False)
|
|
|
|
|
|
# Mobile Cache Request Serializer
|
|
class MobileCacheRequestSerializer(serializers.Serializer):
|
|
"""Mobile Cache Request"""
|
|
|
|
cache_type = serializers.CharField()
|
|
cache_key = serializers.CharField()
|
|
data = serializers.DictField()
|
|
expires_in = serializers.IntegerField(required=False, default=3600)
|
|
|
|
|
|
# Mobile Session Request Serializer
|
|
class MobileSessionRequestSerializer(serializers.Serializer):
|
|
"""Mobile Session Request"""
|
|
|
|
session_id = serializers.CharField()
|
|
device_token = serializers.CharField()
|
|
app_version = serializers.CharField(required=False)
|
|
device_info = serializers.DictField(required=False)
|
|
|
|
|
|
# Mobile Error Report Serializer
|
|
class MobileErrorReportSerializer(serializers.Serializer):
|
|
"""Mobile Error Report"""
|
|
|
|
error_level = serializers.ChoiceField(choices=[
|
|
('debug', 'Debug'),
|
|
('info', 'Info'),
|
|
('warning', 'Warning'),
|
|
('error', 'Error'),
|
|
('critical', 'Critical'),
|
|
])
|
|
error_type = serializers.CharField()
|
|
error_message = serializers.CharField()
|
|
stack_trace = serializers.CharField(required=False)
|
|
app_version = serializers.CharField(required=False)
|
|
os_version = serializers.CharField(required=False)
|
|
device_info = serializers.DictField(required=False)
|
|
session_id = serializers.CharField(required=False) |