class DeliverySerializer(serializers.ModelSerializer):
"""
배송 정보 저장 및 업데이트
"""
class Meta:
model = Delivery
exclude = ('user',)
def validate(self, deliveries_data):
"""
우편 번호 검증
"""
verification_result = ValidatedData.validated_postal_code(**deliveries_data)
if not verification_result:
raise ValidationError("우편 정보가 올바르지 않습니다.")
return deliveries_data
def encrypt_deliveries_information(self, deliveries, validated_data):
"""
오브 젝트 암호화
"""
encrypt_result = AESAlgorithm.encrypt_all(**validated_data)
deliveries.address = encrypt_result.get('address')
deliveries.detail_address = encrypt_result.get('detail_address')
deliveries.recipient = encrypt_result.get('recipient')
deliveries.postal_code = encrypt_result.get('postal_code')
deliveries.save()
return deliveries
def create(self, validated_data):
""""
배송 정보 오브 젝트 생성
"""
deliveries = super().create(validated_data)
deliveries = self.encrypt_deliveries_information(deliveries, validated_data)
deliveries.save()
return deliveries
def update(self, instance, validated_data):
"""
배송 정보 오브 젝트 수정
"""
deliveries = super().update(instance, validated_data)
deliveries = self.encrypt_deliveries_information(deliveries, validated_data)
deliveries.save()
return deliveries
def to_representation(self, instance):
"""
배송지 모델 데이터 복호화
"""
information = super().to_representation(instance)
decrypt_result = AESAlgorithm.decrypt_all(**information)
return decrypt_result
validate
데이터 검증시 자동으로 호출되는 약속된 메서드
create
오브젝트 생성시 자동으로 호출되는 메서드
update
오브젝트 업데이트시 자동으로 호출되는 메서드
to_representation
읽기, 또는 다른 시리얼라이저에서 데이터를 읽어올때 호출되는 메서드
복호화 과정에 알맞는 기능을 한다.