Beispiel #1
0
    def create(self, validated_data):
        address = validated_data.pop('address')
        user = Customuser(**validated_data)
        user.save()
        serializer = AddressSerializer(data=address)
        if serializer.is_valid(raise_exception=True):
            serializer.save(customuser=user)

        return user
Beispiel #2
0
def test_serializer_invalid_zip_code():
    address = {
        "street": "test test",
        "number": 10,
        "zip_code": "000000",
        "city": "SP",
        "state": "SP"
    }
    serializer = AddressSerializer(data=address)
    assert not serializer.is_valid()
Beispiel #3
0
class ProfileDetailSerializer(serializers.ModelSerializer):

    address = AddressSerializer()
    user = UserSerializer()

    class Meta:
        model = Profile
        fields = ('id', 'user', 'image', 'birth_date', 'address')
        read_only_fields = ('id',)

    def update(self, instance, validated_data):
        address = instance.address
        address_data = validated_data.get('address')
        address.street = address_data.get('street', address.street)
        address.complement = address_data.get('complement', address.complement)
        address.post_code = address_data.get('post_code', address.post_code)
        address.city = address_data.get('city', address.city)
        address.state = address_data.get('state', address.state)
        address.country = address_data.get('country', address.country)
        address.save()

        instance.image = validated_data.get('image', instance.image)
        instance.birth_date = validated_data.get('birth_date', instance.birth_date)
        instance.address = address
        instance.save()

        return instance
Beispiel #4
0
class CommunitySerializer(serializers.ModelSerializer):

    leadership = CommunityLeadershipSerializer()
    contacts = CommunityContactsSerializer(many=True)
    images = CommunityPictureSerializer(many=True)
    schools = CommunitySchoolSerializer(many=True)
    biomes = CommunityBiomesSerializer(many=True)
    craftworks = CommunityCraftworkSerializer(many=True)
    address = AddressSerializer()
    products = ProductSerializer(many=True)

    class Meta:
        model = Community
        fields = ('id', 'name', 'geo_lat', 'geo_long', 'distance_from_capital',
                  'idh_state', 'idh_city', 'energy_type', 'families_number',
                  'religion', 'traditional_culture', 'craftworks', 'traditional_events',
                  'sanctuaries', 'hospitals_number', 'ready_care_number', 'psf_number',
                  'address', 'leadership', 'products', 'contacts', 'images', 'schools',
                  'biomes')
        read_only_fields = ('id',)

    def create(self, validated_data):
        address_data = validated_data.pop('address')
        address = Address.objects.create(**address_data)

        community = Community(**validated_data)
        community.address = address
        community.save()

        leaderships_data = validated_data.pop('leadership')

        for leadership_data in leaderships_data:
            CommunityLeadership.objects.create(community=community, **leadership_data)

        contacts_data = validated_data.pop('contacts')

        for contact_data in contacts_data:
            CommunityContacts.objects.create(community=community, **contact_data)

        images_data = validated_data.pop('images')

        for image_data in images_data:
            CommunityPicture.objects.create(community=community, **image_data)

        schools_data = validated_data.pop('schools')

        for school_data in schools_data:
            CommunitySchools.objects.create(community=community, **school_data)

        biomes_data = validated_data.pop('biomes')

        for biome_data in biomes_data:
            CommunityBiomes.objects.create(community=community, **biome_data)

        craftworks_data = validated_data.pop('craftwork')

        for craftwork_data in craftworks_data:
            CommunityCraftwork.objects.create(community=community, **craftwork_data)

        return community
Beispiel #5
0
class CommunityListSerializer(serializers.ModelSerializer):
    address = AddressSerializer()
    images = CommunityPictureSerializer(many=True)

    class Meta:
        model = Community
        fields = ('name', 'address', 'images')
class ProfileSerializer(serializers.ModelSerializer):
    """Serializer for Profile model"""

    address = AddressSerializer(allow_null=True)

    class Meta:
        model = Profile
        fields = ("gender", "birth_date", "address")

    def create(self, validated_data):
        address_data = validated_data.pop("address", None)
        profile = Profile.objects.create(**validated_data)
        if address_data:
            Address.objects.create(user_profile=profile, **address_data)

    def update(self, instance, validated_data):
        address_data = validated_data.pop("address", None)
        address = instance.address

        if address_data and address:
            address.address_line = address_data.get("address_line",
                                                    address.address_line)
            address.district = address_data.get("district", address.district)
            address.save()
        elif address_data:
            address = Address.objects.create(**address_data)
            instance.address = address

        instance.gender = validated_data.get("gender", instance.gender)
        instance.birth_date = validated_data.get("birth_date",
                                                 instance.birth_date)
        instance.save()

        return instance
Beispiel #7
0
class ApartmentSerializer(serializers.ModelSerializer):

    house = serializers.PrimaryKeyRelatedField(queryset=House.objects.all())

    meters = MeterSerializer(many=True, read_only=True)

    account = AccountSerializer(read_only=True)

    address = AddressSerializer(read_only=True)

    number = serializers.IntegerField(write_only=True, required=False)

    class Meta:

        model = Apartment

        fields = (
            'id',
            'address',
            'number',
            'house',
            'floor',
            'entrance',
            'room_number',
            'total_area',
            'dwelling_space',
            'heating_area',
            'meters',
            'account',
        )

        depth = 1

    def create(self, validated_data):
        """
        Create an apartment with the data taken from `validated_data`.
        """
        apartment_number = validated_data.pop('number', '')
        if not apartment_number:
            raise serializers.ValidationError('Field "number" is required.')

        house = validated_data.get('house')
        address = Address.objects.create_apartment_address(
            house.address, apartment_number)

        apartment = Apartment.objects.create(address=address, **validated_data)

        account = Account.objects.create(apartment=apartment)

        coop_services = house.cooperative.services.all()
        for coop_service in coop_services:
            ApartmentTariff.objects.create(apartment=apartment,
                                           service=coop_service.service)
            if coop_service.service.requires_meter:
                meter = Meter.objects.create(apartment=apartment,
                                             service=coop_service.service)
                meter.create_indicators()

        return apartment
Beispiel #8
0
class HouseSerializer(serializers.ModelSerializer):

    apartments = ApartmentSerializer(many=True, read_only=True)

    cooperative = serializers.PrimaryKeyRelatedField(
        queryset=HousingCooperative.objects.all())

    address = AddressSerializer(read_only=True)

    street = serializers.CharField(write_only=True, required=False)

    number = serializers.CharField(write_only=True, required=False)

    class Meta:
        model = House
        fields = (
            'id',
            'cooperative',
            'address',
            'street',
            'number',
            'apartments',
        )

        depth = 2

    def get_street(self, obj):
        return obj.address.street.name

    def get_number(self, obj):
        return obj.address.house.number

    def create(self, validated_data):
        """
        Create a house with data taken from the given
        `validated_data`.
        """
        msg = None
        street_name = validated_data.pop('street', '')
        if not street_name:
            msg = 'Street field is required.'
        house_number = validated_data.pop('number', '')
        if not house_number:
            msg = 'House number field is required.'
        if msg:
            raise serializers.ValidationError(msg)

        address = Address.objects.create_house_address(street_name,
                                                       house_number)

        house = House.objects.create(address=address, **validated_data)

        coop_services = house.cooperative.services.all()
        for coop_service in coop_services:
            HouseTariff.objects.create(house=house,
                                       service=coop_service.service)

        return house
Beispiel #9
0
    def test_create_address(self):
        """Test create address with current user"""
        address_new = sample_address(user=self.user)
        res = self.client.get(ADDRESS_URL)

        addresses = Address.objects.all()
        serializer = AddressSerializer(addresses, many=True)
        
        self.assertEqual(res.status_code, status.HTTP_200_OK)
        self.assertEqual(res.data, serializer.data)
        self.assertEqual(address_new.user, self.user)
Beispiel #10
0
def test_serializer_create():
    address = {
        "street": "test test",
        "number": 10,
        "zip_code": "00000000",
        "city": "SP",
        "state": "SP"
    }
    serializer = AddressSerializer(data=address)
    serializer.is_valid(raise_exception=True)
    serializer.save()
class CompanySerializer(serializers.ModelSerializer):

    address = AddressSerializer()

    class Meta:
        model = Company
        fields = ('id', 'name', 'company_reg', 'sector', 'type', 'address',)
        read_only_field = ('id',)

    def create(self, validated_data):
        address_data = validated_data.pop('address')
        address = Address.objects.create(**address_data)
        company = Company(**validated_data)
        company.address = address
        company.save()

        return company
Beispiel #12
0
def key_addresses(request, pk):
    try:
        privatekey: PrivateKey = PrivateKey.objects.get(pk=pk)
    except PrivateKey.DoesNotExist:
        return HttpResponse(status=404)

    if request.method == 'GET':
        user_id = request.user.id
        if PrivateKey.objects.filter(owner=user_id, id=pk).count() == 0:
            return JsonResponse({"address": None})

        models = Address.objects.filter(private_key=pk)
        response = {}
        for current_model in models:
            serialized = AddressSerializer(current_model).data
            response[current_model.n] = serialized
        return JsonResponse({"address": response})
Beispiel #13
0
class ProfileSerializer(serializers.ModelSerializer):

    address = AddressSerializer()

    class Meta:
        model = Profile
        fields = ('id', 'user', 'image', 'birth_date', 'is_support', 'is_manager', 'is_admin', 'address',)
        read_only_fields = ('id',)

    def create(self, validated_data):
        address_data = validated_data.pop('address')
        address = Address.objects.create(**address_data)

        profile = Profile(**validated_data)
        profile.address = address
        profile.save()

        return profile
Beispiel #14
0
class CustomUserDetailSerializer(serializers.ModelSerializer):
    address = AddressSerializer(serializers.ModelSerializer)

    class Meta:
        model = Customuser
        fields = ('id', 'username', 'first_name', 'last_name', 'email', 'phone', 'address')

    def create(self, validated_data):
        address = validated_data.pop('address')
        user = Customuser(**validated_data)
        user.save()
        serializer = AddressSerializer(data=address)
        if serializer.is_valid(raise_exception=True):
            serializer.save(customuser=user)

        return user

    def update(self, instance, validated_data):
        address = validated_data.pop('address')

        address_instance = Address.objects.get(customuser=instance.id) # TODO poprawic
        address_instance.street = address.get('street', address_instance.street)
        address_instance.local_number = address.get('local_number', address_instance.local_number)
        address_instance.postal_code = address.get('postal_code', address_instance.postal_code)
        address_instance.city = address.get('city', address_instance.city)
        address_instance.country = address.get('country', address_instance.country)

        address_instance.save()

        instance.first_name = validated_data.get('first_name', instance.first_name)
        instance.last_name = validated_data.get('last_name', instance.last_name)
        instance.username = validated_data.get('username', instance.username)
        instance.email = validated_data.get('email', instance.email)
        instance.phone = validated_data.get('phone', instance.phone)

        instance.save()

        return instance
Beispiel #15
0
class PatientSerializer(serializers.ModelSerializer):
    address = AddressSerializer()

    class Meta:
        model = Patient
        fields = ("id", "name", "email", "cpf", "birth_date", "phone",
                  "address")

    def create(self, validated_data):
        address = Address.objects.create(**validated_data["address"])
        validated_data["address"] = address
        return Patient.objects.create(**validated_data)

    def update(self, instance, validated_data):
        Address.objects.filter(pk=instance.address.pk).update(
            **validated_data["address"])
        instance.name = validated_data["name"]
        instance.email = validated_data["email"]
        instance.cpf = validated_data["cpf"]
        instance.birth_date = validated_data["birth_date"]
        instance.phone = validated_data["phone"]
        instance.save()
        validated_data["id"] = instance.pk
        return validated_data
Beispiel #16
0
 def _get_or_create_address(self, validated_data):
     address = validated_data.pop('address')
     address_serializer = AddressSerializer(data=address)
     address_serializer.is_valid(raise_exception=True)
     return address_serializer.save()