80 lines
2.7 KiB
Python
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
|