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