From 4684dcb589d362861efc5769cf20a62191323b9c Mon Sep 17 00:00:00 2001 From: SDE Date: Thu, 13 Jul 2023 15:06:08 +0300 Subject: [PATCH] 0.0.24 route model --- RoutesApp/forms.py | 40 ++++++++++++---------- RoutesApp/migrations/0001_initial.py | 50 ++++++++++++++++++++++++++++ RoutesApp/models.py | 48 ++++++++++++++++++++++++-- TWB/settings.py | 1 + 4 files changed, 120 insertions(+), 19 deletions(-) create mode 100644 RoutesApp/migrations/0001_initial.py diff --git a/RoutesApp/forms.py b/RoutesApp/forms.py index 04b63a4..9e0f85e 100644 --- a/RoutesApp/forms.py +++ b/RoutesApp/forms.py @@ -6,20 +6,26 @@ 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, label='Выберите способ перевозки') - departure_DT = forms.DateTimeField(required=True, label='Дата и время выезда') - arrival_DT = forms.DateTimeField(required=True, label='Дата и время прибытия') - from_country = forms.CharField(required=True, label='Пункт выезда') - to_country = forms.CharField(required=True, label='Пункт приезда') - # from_city = forms.CharField(required=True) - # to_city = forms.CharField(required=True) - from_place = forms.ChoiceField(choices=transfer_location_choices, initial='other', required=True, label='Откуда можете забрать?') - to_place = forms.ChoiceField(choices=transfer_location_choices, initial='other', required=True, label='Куда можете доставить?') - cargo_type = forms.ChoiceField(choices=cargo_type_choices, initial='parcel', required=True, label='Могу перевезти') - weight = forms.IntegerField(required=True, label='Укажите вес до (кг)') - phone = forms.CharField(required=True, label='Укажите номер для связи') - add_phone = forms.CharField(required=True, label='Дополнительный номер') - receive_msg_by_email = forms.BooleanField(initial=False, required=True, label='Получать уведомления по E-mail') - # receive_msg_by_sms = forms.BooleanField(initial=False, required=True) - # owner = forms.IntegerField(required=True) +class RegistrationForm(forms.ModelForm): + class Meta: + model = Route + exclude = ['receive_msg_by_sms', 'owner', 'owner_type'] + + +# class RegistrationForm(forms.Form): +# type_transport = forms.ChoiceField(choices=type_transport_choices, initial='avia', required=True, label='Выберите способ перевозки') +# departure_DT = forms.DateTimeField(required=True, label='Дата и время выезда') +# arrival_DT = forms.DateTimeField(required=True, label='Дата и время прибытия') +# from_country = forms.CharField(required=True, label='Пункт выезда') +# to_country = forms.CharField(required=True, label='Пункт приезда') +# # from_city = forms.CharField(required=True) +# # to_city = forms.CharField(required=True) +# from_place = forms.ChoiceField(choices=transfer_location_choices, initial='other', required=True, label='Откуда можете забрать?') +# to_place = forms.ChoiceField(choices=transfer_location_choices, initial='other', required=True, label='Куда можете доставить?') +# cargo_type = forms.ChoiceField(choices=cargo_type_choices, initial='parcel', required=True, label='Могу перевезти') +# weight = forms.IntegerField(required=True, label='Укажите вес до (кг)') +# phone = forms.CharField(required=True, label='Укажите номер для связи') +# add_phone = forms.CharField(required=True, label='Дополнительный номер') +# receive_msg_by_email = forms.BooleanField(initial=False, required=True, label='Получать уведомления по E-mail') +# # receive_msg_by_sms = forms.BooleanField(initial=False, required=True) +# # owner = forms.IntegerField(required=True) diff --git a/RoutesApp/migrations/0001_initial.py b/RoutesApp/migrations/0001_initial.py new file mode 100644 index 0000000..74d3ad1 --- /dev/null +++ b/RoutesApp/migrations/0001_initial.py @@ -0,0 +1,50 @@ +# Generated by Django 4.2.2 on 2023-07-13 15:00 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Route', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')), + ('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')), + ('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')), + ('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')), + ('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')), + ('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')), + ('owner_type', models.CharField(choices=[('customer', 'Заказчик'), ('mover', 'Перевозчик')], default='customer', verbose_name='Тип опреации')), + ('type_transport', models.CharField(choices=[('avia', 'Авиатранспорт'), ('road', 'Наземный транспорт')], default='avia', verbose_name='Выберите способ перевозки')), + ('departure_DT', models.DateTimeField(default=True, verbose_name='Дата и время выезда')), + ('arrival_DT', models.DateTimeField(default=True, verbose_name='Дата и время прибытия')), + ('from_country', models.CharField(verbose_name='Пункт выезда')), + ('to_country', models.CharField(verbose_name='Пункт приезда')), + ('from_place', models.CharField(choices=[('airport', 'В аэропорту'), ('city', 'По городу'), ('other', 'По договоренности')], default='other', verbose_name='Откуда можете забрать?')), + ('to_place', models.CharField(choices=[('airport', 'В аэропорту'), ('city', 'По городу'), ('other', 'По договоренности')], default='other', verbose_name='Куда можете доставить?')), + ('cargo_type', models.CharField(choices=[('passenger', 'Пассажир'), ('cargo', 'Груз'), ('parcel', 'Бандероль'), ('package', 'Посылка'), ('letter', 'Письмо\\Документ')], default='parcel', verbose_name='Могу перевезти')), + ('weight', models.IntegerField(verbose_name='Укажите вес до (кг)')), + ('phone', models.CharField(verbose_name='Укажите номер для связи')), + ('extra_phone', models.CharField(blank=True, null=True, verbose_name='Дополнительный номер')), + ('receive_msg_by_email', models.BooleanField(default=False, verbose_name='Получать уведомления по E-mail')), + ('receive_msg_by_sms', models.BooleanField(default=False, verbose_name='Получать уведомления по SMS')), + ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rel_routes_for_owner', to=settings.AUTH_USER_MODEL, verbose_name='Владелец')), + ], + options={ + 'verbose_name': 'Маршрут', + 'verbose_name_plural': 'Маршруты', + 'ordering': ('name',), + }, + ), + ] diff --git a/RoutesApp/models.py b/RoutesApp/models.py index 27f90cc..edb7ae6 100644 --- a/RoutesApp/models.py +++ b/RoutesApp/models.py @@ -1,6 +1,6 @@ from django.db import models from django.utils.translation import gettext_lazy as _ -# Create your models here. +from BaseModels.base_models import BaseModel type_transport_choices = ( @@ -20,4 +20,48 @@ cargo_type_choices = ( ('parcel', _('Бандероль')), ('package', _('Посылка')), ('letter', _('Письмо\Документ')) -) \ No newline at end of file +) + +owner_type_choices = ( + ('customer', 'Заказчик'), + ('mover', 'Перевозчик') +) + + +class Route(BaseModel): + from django.contrib.auth.models import User + + owner_type = models.CharField( + choices=owner_type_choices, default='customer', verbose_name=_('Тип опреации')) + + type_transport = models.CharField( + choices=type_transport_choices, default='avia', verbose_name=_('Выберите способ перевозки')) + departure_DT = models.DateTimeField(default=True, verbose_name=_('Дата и время выезда')) + arrival_DT = models.DateTimeField(default=True, verbose_name=_('Дата и время прибытия')) + from_country = models.CharField(verbose_name=_('Пункт выезда')) + to_country = models.CharField(verbose_name=_('Пункт приезда')) + # from_city = forms.CharField(required=True) + # to_city = forms.CharField(required=True) + from_place = models.CharField(choices=transfer_location_choices, default='other', + verbose_name=_('Откуда можете забрать?')) + to_place = models.CharField(choices=transfer_location_choices, default='other', + verbose_name=_('Куда можете доставить?')) + cargo_type = models.CharField(choices=cargo_type_choices, default='parcel', verbose_name=_('Могу перевезти')) + weight = models.IntegerField(verbose_name=_('Укажите вес до (кг)')) + phone = models.CharField(verbose_name=_('Укажите номер для связи')) + extra_phone = models.CharField(verbose_name=_('Дополнительный номер'), blank=True, null=True) + receive_msg_by_email = models.BooleanField(default=False, verbose_name=_('Получать уведомления по E-mail')) + receive_msg_by_sms = models.BooleanField(default=False, verbose_name=_('Получать уведомления по SMS')) + owner = models.ForeignKey(User, verbose_name=_('Владелец'), related_name='rel_routes_for_owner', on_delete=models.CASCADE) + + def __str__(self): + if self.name: + return f'{self.name}' + else: + return str(self.id) + + + class Meta: + verbose_name = _(u'Маршрут') + verbose_name_plural = _(u'Маршруты') + ordering = ('name',) \ No newline at end of file diff --git a/TWB/settings.py b/TWB/settings.py index 9a4b297..314992e 100644 --- a/TWB/settings.py +++ b/TWB/settings.py @@ -46,6 +46,7 @@ INSTALLED_APPS = [ 'GeneralApp', 'AuthApp', + 'RoutesApp', ] MIDDLEWARE = [