diff --git a/AuthApp/forms.py b/AuthApp/forms.py index 25e044f..d6b6065 100644 --- a/AuthApp/forms.py +++ b/AuthApp/forms.py @@ -9,6 +9,11 @@ from .models import * # from datetimepicker.widgets import DateTimePicker # from datetimepicker.helpers import js_loader_url + +class LoginForm(forms.Form): + username = forms.CharField(required=True) + password = forms.CharField(required=True) + class RegistrationForm(forms.Form): from .models import account_type_choices account_type = forms.ChoiceField(choices=account_type_choices, initial='sender', required=True) diff --git a/AuthApp/js_urls.py b/AuthApp/js_urls.py index 76fe6ed..4bc13b0 100644 --- a/AuthApp/js_urls.py +++ b/AuthApp/js_urls.py @@ -7,4 +7,7 @@ from django.contrib.auth import views urlpatterns = [ path('registration/', registration_ajax, name='registration_ajax'), + path('login/', login_ajax, name='login_ajax'), + + path('new_route_view/', new_route_view_ajax, name='new_route_view_ajax'), ] \ No newline at end of file diff --git a/AuthApp/js_views.py b/AuthApp/js_views.py index 3bf2d06..02c14b5 100644 --- a/AuthApp/js_views.py +++ b/AuthApp/js_views.py @@ -12,6 +12,69 @@ from datetime import datetime from django.template.loader import render_to_string from django.urls import reverse + + +def new_route_view_ajax(request): + if request.method != 'POST': + raise Http404 + + from RoutesApp.forms import RegistrationForm + Dict = { + 'form': RegistrationForm() + } + + html = render_to_string('blocks/profile/b_new_route.html', Dict, request=request) + return JsonResponse({'html': html}, status=200) + + +def login_ajax(request): + if request.method != 'POST': + raise Http404 + + try: + + data = request.POST + + from .forms import LoginForm + form = LoginForm(data) + if not form.is_valid(): + Dict = {'form': form} + html = render_to_string('forms/f_registration.html', Dict, request=request) + return JsonResponse({'html': html}, status=400) + + from django.contrib.auth import authenticate + user = authenticate(username=form.data['username'], password=form.data['password']) + if user is not None: + auth.login(request, user) + else: + errors_Dict = { + 'errors': { + '__all__': f'неверный логин и\или пароль' + } + } + Dict = {'form': errors_Dict} + html = render_to_string('forms/f_login.html', Dict) + return JsonResponse({'html': html}, status=400) + + + res_Dict = { + 'redirect_url': reverse('user_profile') + } + + return JsonResponse(res_Dict) + + except Exception as e: + + errors_Dict = { + 'errors': { + '__all__': f'ошибка в запросе = {str(e)}' + } + } + Dict = {'form': errors_Dict} + html = render_to_string('forms/f_login.html', Dict) + return JsonResponse({'html': html}, status=400) + + def registration_ajax(request): if request.method != 'POST': raise Http404 diff --git a/RoutesApp/__init__.py b/RoutesApp/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/RoutesApp/admin.py b/RoutesApp/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/RoutesApp/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/RoutesApp/apps.py b/RoutesApp/apps.py new file mode 100644 index 0000000..1150eaf --- /dev/null +++ b/RoutesApp/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class RoutesappConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'RoutesApp' diff --git a/RoutesApp/forms.py b/RoutesApp/forms.py new file mode 100644 index 0000000..853d33b --- /dev/null +++ b/RoutesApp/forms.py @@ -0,0 +1,25 @@ +# # coding=utf-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 .models import * + + +class RegistrationForm(forms.Form): + type_transport = forms.ChoiceField(choices=type_transport_choices, initial='avia', required=True) + departure_DT = forms.DateTimeField(required=True) + arrival_DT = forms.DateTimeField(required=True) + from_country = forms.CharField(required=True) + to_country = forms.CharField(required=True) + from_city = forms.CharField(required=True) + to_city = forms.CharField(required=True) + from_place = forms.ChoiceField(choices=transfer_location_choices, initial='other', required=True) + to_place = forms.ChoiceField(choices=transfer_location_choices, initial='other', required=True) + cargo_type = forms.ChoiceField(choices=cargo_type_choices, initial='parcel', required=True) + weight = forms.IntegerField(required=True) + phone = forms.CharField(required=True) + add_phone = forms.CharField(required=True) + receive_msg_by_email = forms.BooleanField(initial=False, required=True) + receive_msg_by_sms = forms.BooleanField(initial=False, required=True) + owner = forms.IntegerField(required=True) diff --git a/RoutesApp/migrations/__init__.py b/RoutesApp/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/RoutesApp/models.py b/RoutesApp/models.py new file mode 100644 index 0000000..27f90cc --- /dev/null +++ b/RoutesApp/models.py @@ -0,0 +1,23 @@ +from django.db import models +from django.utils.translation import gettext_lazy as _ +# Create your models here. + + +type_transport_choices = ( + ('avia', _('Авиатранспорт')), + ('road', _('Наземный транспорт')) +) + +transfer_location_choices = ( + ('airport', _('В аэропорту')), + ('city', _('По городу')), + ('other', _('По договоренности')) +) + +cargo_type_choices = ( + ('passenger', _('Пассажир')), + ('cargo', _('Груз')), + ('parcel', _('Бандероль')), + ('package', _('Посылка')), + ('letter', _('Письмо\Документ')) +) \ No newline at end of file diff --git a/RoutesApp/tests.py b/RoutesApp/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/RoutesApp/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/RoutesApp/views.py b/RoutesApp/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/RoutesApp/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/templates/blocks/profile/b_new_route.html b/templates/blocks/profile/b_new_route.html new file mode 100644 index 0000000..3a6cce8 --- /dev/null +++ b/templates/blocks/profile/b_new_route.html @@ -0,0 +1,3 @@ +