gault-millau/apps/transfer/serializers/notification.py
2019-11-15 10:36:23 +03:00

80 lines
2.7 KiB
Python

from rest_framework import serializers
from notification.models import Subscriber
class SubscriberSerializer(serializers.ModelSerializer):
email = serializers.CharField()
locale = serializers.CharField(allow_null=True)
country_code = serializers.CharField(allow_null=True)
class Meta:
model = Subscriber
fields = (
"email",
"locale",
"country_code"
)
def validate(self, data):
data["email"] = self.get_email(data)
data["locale"] = self.get_locale(data)
data["country_code"] = self.get_country_code(data)
return data
def create(self, validated_data):
inst, created = Subscriber.objects.get_or_create(**validated_data)
return inst
def get_email(self, obj):
return obj["email"]
def get_locale(self, obj):
return obj["locale"]
def get_country_code(self, obj):
return obj["country_code"]
class NewsletterSubscriberSerializer(serializers.Serializer):
id = serializers.IntegerField()
email_address__email = serializers.CharField()
email_address__account_id = serializers.IntegerField(allow_null=True)
email_address__ip = serializers.CharField(allow_null=True)
email_address__country_code = serializers.CharField(allow_null=True)
email_address__locale = serializers.CharField(allow_null=True)
created_at = serializers.DateTimeField(format='%m-%d-%Y %H:%M:%S')
# def validate(self, data):
# data.update({
# 'reviewer': self.get_reviewer(data),
# 'status': Review.READY if data['aasm_state'] == 'published' else Review.TO_INVESTIGATE,
# 'published_at': data.pop('created_at'),
# 'old_id': data.pop('id'),
# 'content_object': self.get_establishment(data),
# })
# data.pop('reviewer_id')
# data.pop('establishment_id')
# data.pop('aasm_state')
# return data
#
# def create(self, validated_data):
# obj, _ = Review.objects.update_or_create(
# old_id=validated_data['old_id'],
# defaults=validated_data,
# )
# return obj
#
# @staticmethod
# def get_reviewer(data):
# user = User.objects.filter(old_id=data['reviewer_id']).first()
# if not user:
# raise ValueError(f"User account not found with old_id {data['reviewer_id']}")
# return user
#
# @staticmethod
# def get_establishment(data):
# establishment = Establishment.objects.filter(old_id=data['establishment_id']).first()
# if not establishment:
# raise ValueError(f"Establishment not found with old_id {data['establishment_id']}: ")
# return establishment