Esempio n. 1
0
def user_address(request, address_id=None):
    token = request.headers.get('token')
    token = Token.objects.filter(token=token)
    if token.exists():
        if request.method == 'POST':
            try:
                user = token[0].user
                info = loads(request.body.decode('utf-8'))

                a = Address(user=user,
                            address=info['address'],
                            building_number=info['buildingNumber'],
                            post_code=info['postCode'],
                            lat=info['lat'],
                            long=info['long'])
                a.save()
                return my_response(True, 'success', a.to_json())

            except Exception as e:
                return my_response(False, 'error in insert Address, ' + str(e),
                                   {})
        if request.method == 'DELETE':
            Address.objects.filter(address_id=address_id).delete()
            return my_response(True, 'success', {})
        else:
            return my_response(False, 'invalid method', {})
    else:
        return my_response(False, 'invalid token', {})
Esempio n. 2
0
def test_cannot_create_addres_required_fields(client):
    address_data = {}

    address = Address(**address_data)
    with pytest.raises(
        ValidationError,
        match="['city', 'state_province', 'country', 'public_area_desc', 'number']",
    ):
        address.validate()
Esempio n. 3
0
def save_addresses(profile):
    """ Save address data. Order matters. """
    address1 = Address(
        name="Tertiary", street="4194 Dayton Rd", city="Madison", state="OH", zip_code="44057", address_profile=profile
    )
    address1.save()
    address2 = Address(
        name="Secondary",
        street="232 S. Hartley St.",
        city="York",
        state="PA",
        zip_code="17404",
        address_profile=profile,
    )
    address2.save()
    address3 = Address(
        name="Main",
        street="1401 Glenmeadows Dr",
        city="Round Rock",
        state="TX",
        zip_code="78681",
        address_profile=profile,
    )
    address3.save()
    return address1, address2, address3
Esempio n. 4
0
def test_can_create_address_without_zip_code(client):
    address_data = {
        "city": "São Carlos",
        "state_province": "SP",
        "country": "Brazil",
        "public_area_desc": "Av Lapena",
        "number": "877",
    }

    address = Address(**address_data)
    address.validate()

    assert address.to_json() == json.dumps(address_data)
Esempio n. 5
0
    def get(self, args):
        user = self.user
        task = args.get('task')
        if task not in (1, 2, 3):
            return UserVerifyInfo.TASK_ERROR.value

        if task == 1:
            if user.family_id is None:
                return False
            family = Family.find_by_id(user.family_id)
            if family.run_total < 1:
                return False
            return True

        if task == 2:
            result = ChildPhoto.find_by_uid(user.uid)
            if result is None:
                return False
            return True

        if task == 3:
            result = Address.find_by_uid(user.uid)
            if result is None:
                return False
            return True
Esempio n. 6
0
    def create_address(cls, data=None):
        address_data = {
            "city": "São Carlos",
            "state_province": "SP",
            "country": "Brazil",
            "zip_code": "14801180",
            "public_area_desc": "Av Lapena",
            "number": "877",
        }
        address_data.update(**data or {})

        return Address(**address_data)
    def test_get_address_from_postcode_single(self):
        address = Address()
        address.uprn = "123456"
        address.address_line_1 = "Dataland Village Main Street"
        address.postcode = "AA111ZZ"
        address.point = Point(float("-1.83356713993623"),
                              float("55.4168769443259"),
                              srid=4326)
        address.save()

        found_address = get_address_from_postcode('AA111ZZ')

        self.assertIsNotNone(found_address)
        self.assertEqual(found_address[0].uprn, '123456')
Esempio n. 8
0
    def post(self, args):
        name = args.get('name')
        phone = args.get('phone')
        city = args.get('city')
        detailed_address = args.get('detailed_address')

        if not all([name, phone, city, detailed_address]):
            return UserVerifyInfo.ADDRESS_ERROR.value

        # 先判断加入家庭,家庭task_stage,
        user = self.user
        # 分析参数,前端传过来的是 city:北京,北京市,昌平
        city = args.get('city')
        if isinstance(city, str):
            if city.count(',') != 2:
                args['city'] = ''
                args['district'] = ''
            else:
                _, city, district = city.split(',')
                args['city'] = city
                args['district'] = district
        if user.family_id is None:
            return UserVerifyInfo.TASK_UNDONE.value

        family = Family.find_by_id(user.family_id)
        if family.task_stage < 1:
            return UserVerifyInfo.TASK_UNDONE.value

        child_photo = ChildPhoto.find_by_uid(user.uid)
        if not child_photo:
            return UserVerifyInfo.TASK_UNDONE_2.value

        address = Address.find_by_uid(user.uid)
        if address:
            return UserVerifyInfo.REPETITION_ADDRESS.value

        address = Address.add(uid=user.uid, **args)

        return address_schema.dump(address).data
Esempio n. 9
0
def temperature():
    # todo: add authentication, and validations to this route
    data = request.form
    result = {
        'city': 'Address not found',
        'temp': '',
    }

    # Save logs
    log = Log(search=json.dumps(data))
    save_model(log)

    # validate required field
    if 'address' in data and data['address']:
        # Get geo
        geometry = get_geometry_locations(data['address'])
        if len(geometry) >= 2:
            result['city'] = geometry['city']

            # Check if was already added to the database
            cached = Address.query.filter_by(
                geo=json.dumps(geometry['geo'])).first()
            if cached:
                # set cached values
                result['temp'] = cached.temperature

                # Assume the temperature for a Zipcode does not vary within 1-hour window
                if is_cache_invalid(cached):  # if not valid, update it
                    # I choose using lat, lng because some searche (ex: brazil) do not have zipcode
                    temp = get_temperature_by_geometry(geometry['geo'])
                    result['temp'] = "{0}° C".format(round(temp['temp']))

                    # Update model temperature
                    cached.temperature = result['temp']
                    cached.updated = datetime.datetime.utcnow()
                    save_model(cached)
            else:
                temp = get_temperature_by_geometry(geometry['geo'])
                result['temp'] = "{0}° C".format(round(temp['temp']))

                # Todo: encapsulate it
                address_model = Address(
                    address=result['city'],
                    geo=json.dumps(geometry['geo']),
                    temperature=result['temp'],
                )
                save_model(address_model)

    else:
        return "address required parameter not found in form data", 400
    return jsonify(result)
Esempio n. 10
0
    def save(self, request):
        newBook = Booking()
        newBook.customer = request.user
        newBook.payment_type = request.POST.get("payment_type")
        newBook.price = request.POST.get("price")
        newBook.total_distance = request.POST.get("total_distance")
        newBook.save()
        self.validated_data['book_id'] = newBook.id

        pickupAddress = Address()
        pickupAddress.title = request.POST.get("pickup_address_title")
        pickupAddress.description = request.POST.get(
            "pickup_address_description")
        pickupAddress.longitude = request.POST.get("pickup_address_longitude")
        pickupAddress.latitude = request.POST.get("pickup_address_latitude")
        pickupAddress.is_pickup_loc = True
        pickupAddress.booking = newBook
        pickupAddress.save()

        arrivalAddress = Address()
        arrivalAddress.title = request.POST.get("arrival_address_title")
        arrivalAddress.description = request.POST.get(
            "arrival_address_description")
        arrivalAddress.longitude = request.POST.get(
            "arrival_address_longitude")
        arrivalAddress.latitude = request.POST.get("arrival_address_latitude")
        arrivalAddress.is_arrival_loc = True
        arrivalAddress.booking = newBook
        arrivalAddress.save()

        #  find nearest userInfo
        # nearestDriverUserInfo = findNearestDriver(latitude=pickupAddress.latitude , longitude=pickupAddress.longitude , filterMaxDistance=10000)
        # newBook.driver = nearestDriverUserInfo.user
        return newBook
Esempio n. 11
0
 def get(self):
     user = self.user
     address = Address.find_by_uid(user.uid)
     return address_schema.dump(address).data
Esempio n. 12
0
    def process_row(self, row):
        print(row)

        try:
            address = Address.objects.get(uprn=row[0])
        except Address.DoesNotExist:
            address = Address()
            address.uprn = row[0]

        address.address_line_1 = row[2]
        address.address_line_2 = row[3]
        address.address_line_3 = row[4]
        address.city = row[5]
        address.county = row[6]
        address.postcode = row[7].strip().replace(' ', '').upper()
        address.country_code = row[8]
        address.point = Point(float(row[10]), float(row[9]), srid=4326)

        try:
            address.save()
        except Exception as e:
            print('Could not add: {0}'.format(row))