diff --git a/GeneralApp/views.py b/GeneralApp/views.py index a508a8f..0c58b2c 100644 --- a/GeneralApp/views.py +++ b/GeneralApp/views.py @@ -247,10 +247,12 @@ def MainPage(request): from ArticlesApp.models import ArticleModel arts = ArticleModel.objects.filter(enable=True).order_by('-createDT')[:3] + owner_type = 'mover' + Dict = { 'page': page, 'FAQ': page.FAQ_items.filter(enable=True), - 'route_form': RouteForm(), + 'route_form': RouteForm(owner_type=owner_type), 'articles': arts, 'owner_type': 'mover' } @@ -273,18 +275,19 @@ def StaticPageView(request, url): Dict = {} + owner_type = None if url == '': return MainPage(request) elif url == 'for_movers': - Dict.update({ - 'route_form': RouteForm(), - 'owner_type': 'customer', - }) + owner_type = 'customer' elif url == 'for_customers': + owner_type = 'mover' + if owner_type: Dict.update({ - 'route_form': RouteForm(), - 'owner_type': 'mover' + 'route_form': RouteForm(owner_type=owner_type), + 'owner_type': owner_type, }) + # elif url == 'works': # return WorksPage(request) elif url in ['main']: diff --git a/RoutesApp/forms.py b/RoutesApp/forms.py index b8860bb..4e3e044 100644 --- a/RoutesApp/forms.py +++ b/RoutesApp/forms.py @@ -3,6 +3,8 @@ from django import forms from django.contrib.auth.forms import AuthenticationForm from django.utils.translation import gettext_lazy as _ from django.core.exceptions import ValidationError + +from .funcs import get_cargo_types_by_type_transport from .models import * import copy @@ -26,10 +28,18 @@ class RouteForm(forms.ModelForm): 'from_place', 'to_place', 'receive_msg_by_sms' ] - def __init__(self, *args, **kwargs): + def __init__(self, owner_type, *args, **kwargs): super(RouteForm, self).__init__(*args, **kwargs) + self.fields['from_city'].required = True self.fields['to_city'].required = True + self.fields['type_transport'].required = True + + if owner_type == 'mover': + self.fields['departure_DT'].required = True + self.fields['type_transport'].choices = type_transport_choices[:-1] + else: + self.fields['type_transport'].choices = type_transport_choices def clean(self): # print('check') diff --git a/RoutesApp/funcs.py b/RoutesApp/funcs.py index 3e8fc4a..2671540 100644 --- a/RoutesApp/funcs.py +++ b/RoutesApp/funcs.py @@ -6,6 +6,7 @@ from django.utils.translation import gettext as _ from django.template.loader import render_to_string from datetime import datetime, timedelta from django.db.models import F, Q +import copy elements_on_page = 25 @@ -28,37 +29,41 @@ def get_cargo_types_by_type_transport(type_transport, form=None): def get_profile_new_route_page_html(request, data): - form = RouteForm() + if not 'owner_type' in data: + msg = 'не достаточно данных' + return JsonResponse({'error': msg}, status=400) + + + owner_type = data['owner_type'] + + if data['owner_type'] == 'mover': + tpl = 'v2/blocks/b_create_mover_route.html' + # form.fields['type_transport'].choices = type_transport_choices[:-1] + else: + tpl = 'v2/blocks/b_create_customer_route.html' + # form.fields['type_transport'].choices = type_transport_choices + + from .forms import RouteForm + form = RouteForm(owner_type=owner_type) + form.initial['owner_type'] = owner_type + Dict = { 'form': form } - tpl = None - try: errors_off = True - form = RouteForm(data) + form = RouteForm(data=data, owner_type=owner_type) if not form.is_valid(): pass - form = RouteForm(initial=form.cleaned_data) + form = RouteForm(initial=form.cleaned_data, owner_type=owner_type) - if 'type_transport' in data: - form = get_cargo_types_by_type_transport(data['type_transport'], form) + # if 'type_transport' in data: + # form = get_cargo_types_by_type_transport(data['type_transport'], form) - - if 'owner_type' in data: - form.initial['owner_type'] = data['owner_type'] - - if data['owner_type'] == 'mover': - tpl = 'v2/blocks/b_make_mover_order.html' - form.fields['type_transport'].choices = type_transport_choices[:-1] - else: - tpl = 'v2/blocks/b_make_customer_route.html' - form.fields['type_transport'].choices = type_transport_choices - - Dict.update({'owner_type': data['owner_type']}) + Dict.update({'owner_type': owner_type}) if request.user and request.user.is_authenticated and request.user.user_profile and request.user.user_profile.phone: diff --git a/RoutesApp/js_views.py b/RoutesApp/js_views.py index 89f82ad..11f5243 100644 --- a/RoutesApp/js_views.py +++ b/RoutesApp/js_views.py @@ -173,7 +173,7 @@ def edit_route_ajax(request): route = Route.objects.get(id=data['route_id']) - form = RouteForm(instance=route) + form = RouteForm(instance=route, owner_type=route.owner_type) form = get_cargo_types_by_type_transport(route.type_transport, form) # routeForm_assign_choices_by_type_transport(form, route.type_transport) @@ -381,8 +381,8 @@ def create_or_change_route_ajax(request, route_id=None): route_old_Dict = None owner_type = None - tpl_form_by_owner_type = 'v2/forms/f_make_customer_route.html' - tpl_block_by_owner_type = 'v2/blocks/b_make_customer_route.html' + tpl_form_by_owner_type = 'v2/forms/f_create_customer_route.html' + tpl_block_by_owner_type = 'v2/blocks/b_create_customer_route.html' try: @@ -395,19 +395,19 @@ def create_or_change_route_ajax(request, route_id=None): owner_type = data['owner_type'] if owner_type == 'mover': - tpl_form_by_owner_type = 'v2/forms/f_make_mover_order.html' - tpl_block_by_owner_type = 'v2/blocks/b_make_mover_order.html' + tpl_form_by_owner_type = 'v2/forms/f_create_mover_route.html' + tpl_block_by_owner_type = 'v2/blocks/b_create_mover_route.html' route = None if route_id: route = Route.objects.get(id=route_id) if route: - form = RouteForm(data, instance=route) + form = RouteForm(data=data, instance=route, owner_type=owner_type) Dict.update({'route': route}) route_old_Dict = deepcopy(route.__dict__) else: - form = RouteForm(data) + form = RouteForm(data=data, owner_type=owner_type) if not form.is_valid(): form.initial = form.cleaned_data diff --git a/RoutesApp/views.py b/RoutesApp/views.py index d35ba0e..e51ba7c 100644 --- a/RoutesApp/views.py +++ b/RoutesApp/views.py @@ -26,13 +26,15 @@ def route_search_results_View(request): if request.GET: data = request.GET.dict() + owner_type = data['owner_type'] + routes_Dict = get_routes_Dict(data=data) if routes_Dict: Dict = { 'routes': routes_Dict['routes'], 'last_block': routes_Dict['last_block'], 'show_filter_and_results': True, - 'owner_type': data['owner_type'], + 'owner_type': owner_type, 'last_el': routes_Dict['last_el'], 'page_type': 'routes', 'next_page_els_count': routes_Dict['next_page_els_count'], @@ -41,7 +43,7 @@ def route_search_results_View(request): data.update({'from_address_point_txt': routes_Dict['from_address_point_txt']}) if 'to_address_point_txt' in routes_Dict: data.update({'to_address_point_txt': routes_Dict['to_address_point_txt']}) - Dict.update({'route_form': RouteForm(initial=data)}) + Dict.update({'route_form': RouteForm(initial=data, owner_type=owner_type)}) title = _('Результат поиска маршрутов') if 'from_address_point_txt' in data: diff --git a/templates/v2/blocks/b_make_customer_route.html b/templates/v2/blocks/b_create_customer_route.html similarity index 92% rename from templates/v2/blocks/b_make_customer_route.html rename to templates/v2/blocks/b_create_customer_route.html index 90f6c9e..439ee69 100644 --- a/templates/v2/blocks/b_make_customer_route.html +++ b/templates/v2/blocks/b_create_customer_route.html @@ -12,5 +12,5 @@