From 68a69ba6a88896fcbe139eb62363f5d0c249c1f3 Mon Sep 17 00:00:00 2001 From: SDE Date: Fri, 28 Jul 2023 01:13:22 +0300 Subject: [PATCH] 0.0.49 fix routes --- RoutesApp/funcs.py | 52 +++++++++++++++++++++++++++++++++++++++++++ RoutesApp/js_views.py | 46 +++++++++++++------------------------- 2 files changed, 67 insertions(+), 31 deletions(-) create mode 100644 RoutesApp/funcs.py diff --git a/RoutesApp/funcs.py b/RoutesApp/funcs.py new file mode 100644 index 0000000..86e1b4b --- /dev/null +++ b/RoutesApp/funcs.py @@ -0,0 +1,52 @@ +from .models import * +def get_routes_for_user(user): + from ReferenceDataApp.models import Airport, Country, City + + if not user and user.is_authenticated: + errors_Dict = { + 'errors': { + 'all__': f'ошибка идентификации пользователя' + } + } + return errors_Dict + + routes = Route.objects.filter(owner=user) + + 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 \ No newline at end of file diff --git a/RoutesApp/js_views.py b/RoutesApp/js_views.py index 7748edb..ef1f683 100644 --- a/RoutesApp/js_views.py +++ b/RoutesApp/js_views.py @@ -12,6 +12,7 @@ from datetime import datetime from django.template.loader import render_to_string from django.urls import reverse from .forms import * +from .funcs import get_routes_for_user def new_route_view_ajax(request): @@ -27,39 +28,18 @@ def new_route_view_ajax(request): def get_routes_ajax(request): - from ReferenceDataApp.models import Airport, Country, City + if request.method != 'POST': raise Http404 try: - routes = [] - if request.user and request.user.is_authenticated: - routes = Route.objects.filter(owner=request.user) + routes_Dict = get_routes_for_user(request.user) + if 'errors' in routes_Dict: + return JsonResponse(routes_Dict, status=400) - 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 route points = {str(e)}' - print(msg) - - Dict = { - 'routes': routes - } - html = render_to_string('blocks/profile/b_my_routes.html', Dict, request=request) + html = render_to_string('blocks/profile/b_my_routes.html', routes_Dict, request=request) res_Dict = { 'html': html @@ -97,11 +77,15 @@ def create_route_ajax(request): obj.owner = request.user obj.save() - routes = Route.objects.filter(owner=request.user) - Dict = { - 'routes': routes - } - html = render_to_string('blocks/profile/b_my_routes.html', Dict, request=request) + routes_Dict = get_routes_for_user(request.user) + + if 'errors' in routes_Dict: + form.errors.update(routes_Dict['errors']) + Dict = {'form': form} + html = render_to_string('blocks/profile/b_new_route.html', Dict, request=request) + return JsonResponse({'html': html}, status=400) + + html = render_to_string('blocks/profile/b_my_routes.html', routes_Dict, request=request) res_Dict = { 'html': html