adding
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from apps.banker.models import Contact, ContactField, ContactGroup, MessageTemplate
|
||||
|
||||
# نکته: id هر رکورد را خودِ اپ (UUID) تولید میکند و روی سرور هم همان مقدار
|
||||
# استفاده میشود. چون هر بار /backup/ کل رکوردهای کاربر جایگزین میشوند (نه
|
||||
# create تکی)، اعتبارسنج یکتابودنِ خودکار DRF روی id باید خاموش شود؛ وگرنه
|
||||
# از دومین بکاپ به بعد چون همان idها از قبل در دیتابیس هست، validation رد
|
||||
# میشود.
|
||||
_ID_NO_UNIQUE_CHECK = {"id": {"validators": []}}
|
||||
|
||||
|
||||
class ContactGroupSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = ContactGroup
|
||||
fields = ["id", "name", "color", "is_general", "member_ids"]
|
||||
extra_kwargs = _ID_NO_UNIQUE_CHECK
|
||||
|
||||
|
||||
class ContactFieldSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = ContactField
|
||||
fields = ["id", "group_id", "label", "sort_order"]
|
||||
extra_kwargs = _ID_NO_UNIQUE_CHECK
|
||||
|
||||
|
||||
class ContactSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Contact
|
||||
fields = ["id", "name", "phone", "device_contact_id", "field_values", "channel_ids"]
|
||||
extra_kwargs = _ID_NO_UNIQUE_CHECK
|
||||
|
||||
|
||||
class MessageTemplateSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = MessageTemplate
|
||||
fields = ["id", "group_id", "name", "body", "mode"]
|
||||
extra_kwargs = _ID_NO_UNIQUE_CHECK
|
||||
|
||||
|
||||
class BackupSerializer(serializers.Serializer):
|
||||
"""عکس کامل وضعیت اپ روی یک کاربر — برای پشتیبانگیری/بازیابی"""
|
||||
|
||||
contact_fields = ContactFieldSerializer(many=True, required=False, default=list)
|
||||
contacts = ContactSerializer(many=True, required=False, default=list)
|
||||
groups = ContactGroupSerializer(many=True, required=False, default=list)
|
||||
templates = MessageTemplateSerializer(many=True, required=False, default=list)
|
||||
Reference in New Issue
Block a user