Exemplo n.º 1
0
class ChangeRequestSerializer(serializers.Serializer):
    """
    Validate change requests and convert it to the format expected by dnb-service.
    """

    name = serializers.CharField(source='primary_name', required=False)
    trading_names = serializers.ListField(required=False)
    number_of_employees = serializers.IntegerField(source='employee_number', required=False)
    turnover = serializers.IntegerField(source='annual_sales', required=False)
    address = AddressRequestSerializer(required=False)
    website = RelaxedURLField(source='domain', required=False)

    def validate_website(self, website):
        """
        Change website to domain.
        """
        return urlparse(website).netloc
Exemplo n.º 2
0
class DNBCompanyInvestigationSerializer(serializers.Serializer):
    """
    Validate POST data for DNBCompanyInvestigationView and convert it to the format
    expected by dnb-service.
    """

    company = NestedRelatedField(Company)
    name = serializers.CharField(source='primary_name')
    address = DNBAddressSerializer()
    website = RelaxedURLField(
        source='domain',
        required=False,
        allow_blank=True,
    )
    telephone_number = serializers.CharField(
        required=False,
        allow_blank=True,
    )

    def validate_website(self, website):
        """
        Change website to domain.
        """
        return urlparse(website).netloc

    def validate(self, data):
        """
        Validate if either website or telephone_number is present.
        """
        data = super().validate(data)

        if (
            data.get('domain') in (None, '')
            and data.get('telephone_number') in (None, '')
        ):
            raise serializers.ValidationError(
                'Either website or telephone_number must be provided.',
            )

        address_data = data.pop('address', {})
        return {
            **data,
            **address_data,
        }
Exemplo n.º 3
0
 def test_url_field_output(self, input_website, expected_website):
     """Tests that RelaxedURLField prepends http:// when one is not stored."""
     assert RelaxedURLField().to_representation(
         input_website) == expected_website
Exemplo n.º 4
0
 def test_url_field_input(self, input_website, expected_website):
     """Tests that RelaxedURLField prepends http:// when one is not provided."""
     assert RelaxedURLField().run_validation(
         input_website) == expected_website