diff --git a/RoutesApp/admin.py b/RoutesApp/admin.py index 3a45d44..4b5e77b 100644 --- a/RoutesApp/admin.py +++ b/RoutesApp/admin.py @@ -11,8 +11,9 @@ class Admin_Route(Admin_Trans_BaseModel): 'id', 'owner_type', 'rising_DT', 'receive_msg_by_email', 'type_transport', 'cargo_type', - 'departure_DT', 'from_city', 'from_place', - 'arrival_DT', 'to_city', 'to_place', 'owner', + 'departure_DT', 'from_city', #'from_place', + 'arrival_DT', 'to_city', #'to_place', + 'owner', 'order', 'modifiedDT', 'createDT' ] list_editable = ['rising_DT'] @@ -23,7 +24,8 @@ class Admin_Route(Admin_Trans_BaseModel): 'owner_type', 'type_transport', 'rising_DT', 'cargo_type', - 'from_place', 'arrival_DT', + # 'from_place', + 'arrival_DT', 'modifiedDT', 'createDT' ] diff --git a/RoutesApp/forms.py b/RoutesApp/forms.py index 4e46c08..3bca714 100644 --- a/RoutesApp/forms.py +++ b/RoutesApp/forms.py @@ -48,16 +48,17 @@ def routeForm_assign_choices_by_type_transport(form, type_transport): class RouteForm(forms.ModelForm): - from_address_point_txt = forms.CharField(required=True) - to_address_point_txt = forms.CharField(required=True) - departure_DT = forms.DateTimeField(required=True, input_formats=['%d.%m.%Y %H:%M']) - arrival_DT = forms.DateTimeField(required=True, input_formats=['%d.%m.%Y %H:%M']) + # from_address_point_txt = forms.CharField(required=True) + # to_address_point_txt = forms.CharField(required=True) + departure_DT = forms.DateField(required=True, input_formats=['%d.%m.%Y']) + arrival_DT = forms.DateField(required=True, input_formats=['%d.%m.%Y']) class Meta: model = Route exclude = [ 'name', 'name_plural', 'order', 'createDT', 'modifiedDT', 'enable', 'json_data', - 'receive_msg_by_sms', 'owner', 'owner_type' + 'receive_msg_by_sms', 'owner', 'owner_type', + 'extra_phone', 'weight', '' ] def clean(self): @@ -72,11 +73,11 @@ class RouteForm(forms.ModelForm): if error: self.add_error('phone', error) - if 'extra_phone' in cleaned_data and 'extra_phone' in cleaned_data: - from BaseModels.validators.form_field_validators import get_phone_valid_error - error = get_phone_valid_error(cleaned_data["extra_phone"]) - if error: - self.add_error('extra_phone', error) + # if 'extra_phone' in cleaned_data and 'extra_phone' in cleaned_data: + # from BaseModels.validators.form_field_validators import get_phone_valid_error + # error = get_phone_valid_error(cleaned_data["extra_phone"]) + # if error: + # self.add_error('extra_phone', error) if 'departure_DT' in cleaned_data and 'arrival_DT' in cleaned_data and cleaned_data['arrival_DT'] < cleaned_data['departure_DT']: self.add_error('arrival_DT', _('Указана неверная дата прибытия')) diff --git a/RoutesApp/migrations/0010_route_comment_alter_route_cargo_type_and_more.py b/RoutesApp/migrations/0010_route_comment_alter_route_cargo_type_and_more.py new file mode 100644 index 0000000..11b00bc --- /dev/null +++ b/RoutesApp/migrations/0010_route_comment_alter_route_cargo_type_and_more.py @@ -0,0 +1,48 @@ +# Generated by Django 4.2.2 on 2024-12-05 15:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('RoutesApp', '0009_alter_route_phone'), + ] + + operations = [ + migrations.AddField( + model_name='route', + name='comment', + field=models.TextField(blank=True, null=True, verbose_name='Примечания'), + ), + migrations.AlterField( + model_name='route', + name='cargo_type', + field=models.CharField(choices=[('passenger', 'Пассажир'), ('cargo', 'Груз (свыше 30 кг)'), ('parcel', 'Бандероль (до 5кг)'), ('package', 'Посылка (до 30кг)'), ('letter', 'Письмо\\Документы')], default='parcel', verbose_name='Могу перевезти'), + ), + migrations.AlterField( + model_name='route', + name='departure_DT', + field=models.DateTimeField(blank=True, null=True, verbose_name='Дата и время выезда'), + ), + migrations.AlterField( + model_name='route', + name='from_place', + field=models.CharField(blank=True, choices=[('airport', 'В аэропорту'), ('city', 'По городу'), ('other', 'По договоренности')], default='other', null=True, verbose_name='Откуда можете забрать?'), + ), + migrations.AlterField( + model_name='route', + name='to_place', + field=models.CharField(blank=True, choices=[('airport', 'В аэропорту'), ('city', 'По городу'), ('other', 'По договоренности')], default='other', null=True, verbose_name='Куда можете доставить?'), + ), + migrations.AlterField( + model_name='route', + name='type_transport', + field=models.CharField(blank=True, choices=[('', 'Мне без разницы'), ('avia', 'Авиатранспорт'), ('road', 'Наземный транспорт')], default='', verbose_name='Выберите способ перевозки'), + ), + migrations.AlterField( + model_name='route', + name='weight', + field=models.IntegerField(blank=True, null=True, verbose_name='Укажите вес до (кг)'), + ), + ] diff --git a/RoutesApp/models.py b/RoutesApp/models.py index e1210ad..55eb45d 100644 --- a/RoutesApp/models.py +++ b/RoutesApp/models.py @@ -5,7 +5,7 @@ from colorfield.fields import ColorField type_transport_choices = [ - ('', _('-- Выберите cпособ перевозки --')), + ('', _('Мне без разницы')), ('avia', _('Авиатранспорт')), ('road', _('Наземный транспорт')) ] @@ -18,10 +18,10 @@ transfer_location_choices = ( cargo_type_choices = ( ('passenger', _('Пассажир')), - ('cargo', _('Груз')), - ('parcel', _('Бандероль')), - ('package', _('Посылка')), - ('letter', _('Письмо\Документ')) + ('cargo', _('Груз (свыше 30 кг)')), + ('parcel', _('Бандероль (до 5кг)')), + ('package', _('Посылка (до 30кг)')), + ('letter', _('Письмо\Документы')) ) owner_type_choices = ( @@ -38,11 +38,19 @@ class Route(BaseModel): choices=owner_type_choices, default='customer', verbose_name=_('Тип опреации')) type_transport = models.CharField( - choices=type_transport_choices, default='', verbose_name=_('Выберите способ перевозки')) - departure_DT = models.DateTimeField(verbose_name=_('Дата и время выезда')) + choices=type_transport_choices, default='', verbose_name=_('Выберите способ перевозки'), + blank=True + ) + # не обязательно с v2 + departure_DT = models.DateTimeField( + verbose_name=_('Дата и время выезда'), null=True, blank=True + ) arrival_DT = models.DateTimeField(verbose_name=_('Дата и время прибытия')) + # не используем с v2 from_address_point = models.IntegerField(verbose_name=_('Пункт выезда')) + # не используем с v2 to_address_point = models.IntegerField(verbose_name=_('Пункт приезда')) + from_city = models.ForeignKey( City, verbose_name=_('Город отправки'), related_name='rel_routes_for_cityFrom', on_delete=models.SET_NULL, null=True, blank=True @@ -51,18 +59,34 @@ class Route(BaseModel): City, verbose_name=_('Город получения'), related_name='rel_routes_for_cityTo', on_delete=models.SET_NULL, null=True, blank=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=_('Куда можете доставить?')) + # не используем с v2 + from_place = models.CharField( + choices=transfer_location_choices, default='other', + verbose_name=_('Откуда можете забрать?'), + null=True, blank=True + ) + # не используем с v2 + to_place = models.CharField( + choices=transfer_location_choices, default='other', + verbose_name=_('Куда можете доставить?'), + null=True, blank=True + ) cargo_type = models.CharField(choices=cargo_type_choices, default='parcel', verbose_name=_('Могу перевезти')) - weight = models.IntegerField(verbose_name=_('Укажите вес до (кг)')) + # не используем с v2 + weight = models.IntegerField(verbose_name=_('Укажите вес до (кг)'), null=True, blank=True) phone = models.CharField(verbose_name=_('Укажите номер для связи'), blank=True, null=True) + # не используем с v2 extra_phone = models.CharField(verbose_name=_('Дополнительный номер'), blank=True, null=True) + receive_msg_by_email = models.BooleanField(default=False, verbose_name=_('Получать уведомления по E-mail')) + # не используем с v2 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) + # добавлен в v2 + comment = models.TextField(verbose_name='Примечания', null=True, blank=True) + rising_DT = models.DateTimeField( verbose_name=_('Дата и время последнего поднятия'), blank=True, null=True