Exemple #1
0
 def update_address(self, request, *args, **kwargs):
     try:
         instance = self.get_object()
         serializer = UserAddressSerializer(data=request.data)
         serializer.is_valid(raise_exception=True)
         address, created = Address.objects.get_or_create(
             line1=serializer.validated_data['line1'],
             locality=serializer.validated_data['locality'],
             state=serializer.validated_data['state'],
             country=serializer.validated_data['country'],
             postcode=serializer.validated_data['postcode'],
             user=instance)
         instance.residential_address = address
         with transaction.atomic():
             instance.save()
             instance.log_user_action(
                 EmailUserAction.ACTION_POSTAL_ADDRESS_UPDATE.format(
                     '{} {} ({})'.format(instance.first_name,
                                         instance.last_name,
                                         instance.email)), request)
         serializer = UserSerializer(instance)
         return Response(serializer.data)
     except serializers.ValidationError:
         print(traceback.print_exc())
         raise
     except ValidationError as e:
         print(traceback.print_exc())
         raise serializers.ValidationError(repr(e.error_dict))
     except Exception as e:
         print(traceback.print_exc())
         raise serializers.ValidationError(str(e))
Exemple #2
0
 def update_address(self, request, *args, **kwargs):
     try:
         instance = self.get_object()
         serializer = UserAddressSerializer(data=request.data)
         serializer.is_valid(raise_exception=True)
         address, created = Address.objects.get_or_create(
             line1 = serializer.validated_data['line1'],
             locality = serializer.validated_data['locality'],
             state = serializer.validated_data['state'],
             country = serializer.validated_data['country'],
             postcode = serializer.validated_data['postcode'],
             user = instance 
         )
         instance.residential_address = address
         with transaction.atomic():
             instance.save()
             instance.log_user_action(EmailUserAction.ACTION_POSTAL_ADDRESS_UPDATE.format(
             '{} {} ({})'.format(instance.first_name, instance.last_name, instance.email)), request)
         serializer = UserSerializer(instance)
         return Response(serializer.data)
     except serializers.ValidationError:
         print(traceback.print_exc())
         raise
     except ValidationError as e:
         print(traceback.print_exc())
         raise serializers.ValidationError(repr(e.error_dict))
     except Exception as e:
         print(traceback.print_exc())
         raise serializers.ValidationError(str(e))
class SaveEmailUserSerializer(serializers.ModelSerializer):
    first_name = serializers.CharField(
        allow_blank=True
    )  # We need allow_blank=True otherwise blank is not allowed by blank=False setting in the model
    last_name = serializers.CharField(
        allow_blank=True
    )  # We need allow_blank=True otherwise blank is not allowed by blank=False setting in the model
    residential_address = UserAddressSerializer(read_only=True)
    residential_address_id = serializers.IntegerField(required=False,
                                                      write_only=True,
                                                      allow_null=True)

    # residential_address = UserAddressSerializer()

    # def create(self, validated_data):
    #     return super(SaveEmailUserSerializer, self).create(validated_data)

    # def update(self, instance, validated_data):
    #     return super(SaveEmailUserSerializer, self).update(instance, validated_data)
    def validate_first_name(self, value):
        # if not value:
        #     raise serializers.ValidationError('First name must not be null.')
        return value

    def validate_last_name(self, value):
        # if not value:
        #     raise serializers.ValidationError('Last name must not be null.')
        return value

    def validate(self, data):
        # return data
        if not data['first_name'] and not data['last_name']:
            raise serializers.ValidationError(
                'Please fill in at least Given Name(s) field or Last Name field.'
            )
        else:
            return data

    class Meta:
        model = EmailUser
        fields = (
            'id',
            'email',
            'first_name',
            'last_name',
            'residential_address',
            'residential_address_id',
            'phone_number',
            'mobile_number',
            'organisation',
            'dob',
        )
        read_only_fields = (
            # 'id',
            # 'residential_address',
        )
Exemple #4
0
class EmailUserAppViewSerializer(serializers.ModelSerializer):
    residential_address = UserAddressSerializer()
    identification = DocumentSerializer()

    class Meta:
        model = EmailUser
        fields = (
            'id',
            'email',
            'first_name',
            'last_name',
            'dob',
            'title',
            'organisation',
            'residential_address',
            'identification',
            'email',
            'phone_number',
            'mobile_number',
        )
class EmailUserSerializer(serializers.ModelSerializer):
    full_name = serializers.SerializerMethodField()
    residential_address = UserAddressSerializer()

    class Meta:
        model = EmailUser
        fields = (
            'id',
            'email',
            'full_name',
            'first_name',
            'last_name',
            'residential_address',
            'phone_number',
            'mobile_number',
            'organisation',
            'dob',
        )

    def get_full_name(self, obj):
        return obj.get_full_name()