86 lines
2.6 KiB
Python
86 lines
2.6 KiB
Python
from .models import *
|
|
def get_routes_Dict(user=None, data=None):
|
|
from ReferenceDataApp.models import Airport, Country, City
|
|
|
|
# if not user and user.is_authenticated:
|
|
# errors_Dict = {
|
|
# 'errors': {
|
|
# 'all__': f'ошибка идентификации пользователя'
|
|
# }
|
|
# }
|
|
# return errors_Dict
|
|
kwargs = {}
|
|
if user:
|
|
kwargs.update({
|
|
'owner': user
|
|
})
|
|
|
|
from_el = None
|
|
to_el = None
|
|
|
|
if data:
|
|
for key, val in data.items():
|
|
if val:
|
|
if key == 'weight':
|
|
weight_list = val.split(';')
|
|
if weight_list[0]:
|
|
kwargs.update({f'{key}__gte': int(weight_list[0])})
|
|
if weight_list[1]:
|
|
kwargs.update({f'{key}__lte': int(weight_list[1])})
|
|
if key not in (
|
|
'from_address_point_txt', 'to_address_point_txt', 'csrfmiddlewaretoken', 'sort', 'weight',
|
|
'from_el', 'to_el'
|
|
):
|
|
kwargs.update({key: val})
|
|
|
|
if key == 'from_el':
|
|
from_el = int(val)
|
|
if key == 'to_el':
|
|
to_el = int(val)
|
|
|
|
routes = Route.objects.filter(**kwargs).order_by('-modifiedDT')
|
|
if from_el and to_el:
|
|
routes = routes[from_el:to_el]
|
|
elif from_el:
|
|
routes = routes[from_el:]
|
|
elif to_el:
|
|
routes = routes[:to_el]
|
|
|
|
res_Dict = {}
|
|
|
|
try:
|
|
|
|
for route in routes:
|
|
|
|
try:
|
|
|
|
if route.type_transport == 'avia':
|
|
route.from_airport = Airport.objects.get(id=route.from_address_point)
|
|
route.to_airport = Airport.objects.get(id=route.to_address_point)
|
|
route.from_city = route.from_airport.city
|
|
route.to_city = route.to_airport.city
|
|
else:
|
|
route.from_city = City.objects.get(id=route.from_address_point)
|
|
route.to_city = City.objects.get(id=route.to_address_point)
|
|
|
|
route.from_country = route.from_city.country
|
|
route.to_country = route.to_city.country
|
|
except Exception as e:
|
|
msg = f'get_routes_for_user get route Error = {str(e)}'
|
|
print(msg)
|
|
|
|
res_Dict = {
|
|
'routes': routes
|
|
}
|
|
return res_Dict
|
|
|
|
|
|
except Exception as e:
|
|
msg = f'get_routes_for_user = {str(e)}'
|
|
print(msg)
|
|
errors_Dict = {
|
|
'errors': {
|
|
'all__': msg
|
|
}
|
|
}
|
|
return errors_Dict |