Merge branch 'dev' into fix_fixtures

dev
AlexP077 2 years ago
commit aa5d45d983

@ -105,4 +105,6 @@ server {
return 404; return 404;
} }
``` ```

@ -40,13 +40,13 @@ class PointService:
req_url = f"https://geocode.search.hereapi.com/v1/geocode?q={addr}&apiKey={GEOCODER_API_KEY}" req_url = f"https://geocode.search.hereapi.com/v1/geocode?q={addr}&apiKey={GEOCODER_API_KEY}"
response = requests.get(req_url).json().get('items') response = requests.get(req_url).json().get('items')
if not response: if not response:
models.PrePlacementPoint.objects.create(address=addr, matching_status=MatchingStatus.Error.name, models.PrePlacementPoint.objects.get_or_create(address=addr, matching_status=MatchingStatus.Error.name,
status=PointStatus.Pending.name) status=PointStatus.Pending.name)
problem += 1 problem += 1
continue continue
coords = response[0].get('position') coords = response[0].get('position')
if not coords: if not coords:
models.PrePlacementPoint.objects.create(address=addr, matching_status=MatchingStatus.Error.name, models.PrePlacementPoint.objects.get_or_create(address=addr, matching_status=MatchingStatus.Error.name,
status=PointStatus.Pending.name) status=PointStatus.Pending.name)
problem += 1 problem += 1
continue continue
@ -64,8 +64,19 @@ class PointService:
for o in objs: for o in objs:
distances = models.PlacementPointPVZDistance.objects.filter(placement_point=o.get('id')).all() distances = models.PlacementPointPVZDistance.objects.filter(placement_point=o.get('id')).all()
o.pop('id') o.pop('id')
pre_obj, _ = models.PrePlacementPoint.objects.get_or_create( street = o.pop('street')
**{**o, "matching_status": MatchingStatus.Matched.name}) house_number = o.pop('house_number')
if o.get('name'):
name = o.pop('name')
pre_obj, _ = models.PrePlacementPoint.objects.get_or_create(street=street,
house_number=house_number,name=name,
matching_status=MatchingStatus.Matched.name,
defaults=o)
else:
pre_obj, _ = models.PrePlacementPoint.objects.get_or_create(street=street,
house_number=house_number,
matching_status=MatchingStatus.Matched.name,
defaults=o)
for d in distances: for d in distances:
models.PrePlacementPointPVZDistance.objects.get_or_create(placement_point=pre_obj, models.PrePlacementPointPVZDistance.objects.get_or_create(placement_point=pre_obj,
pvz_postamates_group=d.pvz_postamates_group, pvz_postamates_group=d.pvz_postamates_group,
@ -73,8 +84,9 @@ class PointService:
matched += 1 matched += 1
elif not rayon: elif not rayon:
models.PrePlacementPoint.objects.get_or_create(address=addr, street=response.get('street'), models.PrePlacementPoint.objects.get_or_create(street=response.get('street'),
house_number=response.get('houseNumber'), house_number=response.get('houseNumber'),
address=addr,
subject_rf=response.get('state'), subject_rf=response.get('state'),
city=response.get('city'), city=response.get('city'),
category=cat, geometry=wkt, sample_trn=False, category=cat, geometry=wkt, sample_trn=False,
@ -82,28 +94,29 @@ class PointService:
matching_status=MatchingStatus.Error.name, matching_status=MatchingStatus.Error.name,
status=PointStatus.Pending.name) status=PointStatus.Pending.name)
problem += 1 problem += 1
elif cat == 'Подъезд жилого дома': elif cat == 'Подъезд жилого дома' and models.House.objects.filter(street=response.get('street'),
houses = models.House.objects.filter(street=response.get('street'), house_number=response.get(
house_number=response.get('houseNumber')).values().all() 'houseNumber')).first():
for house in houses: house = models.House.objects.filter(street=response.get('street'),
house_number=response.get('houseNumber')).values().first()
house.pop('id') house.pop('id')
if house.get('doors') and house.get('doors') != 0: if house.get('doors') and house.get('doors') > 1:
house['flat_cnt'] = int(house['flat_cnt'] / house['doors']) house['flat_cnt'] = int(house['flat_cnt'] / house['doors'])
for _num in range(house['doors']): for _num in range(house['doors']):
models.PrePlacementPoint.objects.get_or_create(**house, address=addr, models.PrePlacementPoint.objects.get_or_create(address=addr,
name=f'Подъезд {_num + 1}', name=f'Подъезд {_num + 1}',
matching_status=MatchingStatus.New.name, matching_status=MatchingStatus.New.name,
sample_trn=False, sample_trn=False,
is_vis=True, geometry=wkt, is_vis=True, category=cat, geometry=wkt,
status=PointStatus.Pending.name, area=rayon, status=PointStatus.Pending.name, area=rayon,
district=rayon.AO) district=rayon.AO, defaults=house)
else: else:
models.PrePlacementPoint.objects.get_or_create(**house, address=addr, models.PrePlacementPoint.objects.get_or_create(address=addr,
matching_status=MatchingStatus.New.name, matching_status=MatchingStatus.New.name,
sample_trn=False, sample_trn=False,
is_vis=True, geometry=wkt, is_vis=True, category=cat, geometry=wkt,
status=PointStatus.Pending.name, area=rayon, status=PointStatus.Pending.name, area=rayon,
district=rayon.AO) district=rayon.AO, defaults=house)
else: else:
models.PrePlacementPoint.objects.get_or_create(address=addr, street=response.get('street'), models.PrePlacementPoint.objects.get_or_create(address=addr, street=response.get('street'),
house_number=response.get('houseNumber'), house_number=response.get('houseNumber'),

Loading…
Cancel
Save