Files
pi-ku/backend/letters/serializers.py
T

33 lines
1.0 KiB
Python

from rest_framework import serializers
from .models import Letter
class LetterSerializer(serializers.ModelSerializer):
class Meta:
model = Letter
fields = [
"public_id",
"type",
"status",
"encrypted_content",
"encrypted_metadata",
"encrypted_dek",
"unlock_at",
"sealed_at",
"created_at",
"updated_at",
] # user to be fetched from request
read_only_fields = ["public_id", "created_at", "updated_at"]
def create(self, validated_data):
user = self.context["request"].user # get user from access token
return Letter.objects.create(user=user, **validated_data)
def validate(self, data):
if (data.get("encrypted_content") or data.get("encrypted_metadata")) and not data.get("encrypted_dek"):
raise serializers.ValidationError(
"encrypted_dek is required when encrypted_content and encrypted_metadata are present"
)
return data