Мелкие правки модели заказа и исправление параметров метода order.create

This commit is contained in:
VladislavOstapov 2023-03-28 19:49:04 +03:00
parent 1e5c479077
commit ca5ddec512
2 changed files with 50 additions and 30 deletions

View File

@ -300,8 +300,7 @@ class ApiAccount:
user.password = new_password user.password = new_password
try: try:
await sync_to_async(user.full_clean)() await sync_to_async(user.full_clean)()
except: except Exception:
traceback.print_exc()
raise Exception(API_ERROR_INVALID_PASSWORD) raise Exception(API_ERROR_INVALID_PASSWORD)
if ApiAccount.__check_phone_code(phone, code): if ApiAccount.__check_phone_code(phone, code):
@ -502,51 +501,70 @@ class ApiOrder:
params=[ params=[
ApiParamAccessToken(), ApiParamAccessToken(),
ApiParamStr(name='name', max_length=200, description="Название заказа"), ApiParamStr(name='name', max_length=200, description="Название заказа"),
ApiParamStr(name='description', max_length=1000, description="Описание заказа", ApiParamEnum(name="address_city", description="Город: {choices}", choices=CITIES_CHOICES),
required=False, default=""), ApiParamStr(name='address_text', max_length=70, description="Улица, дом",
ApiParamFloat(name='square', value_max=99999.99, value_min=1.0,
description='Площадь в м²'),
ApiParamStr(name='work_time', max_length=100, description="Рабочее время",
required=False, default=""), required=False, default=""),
ApiParamEnum(name='type_of_renovation', choices=Order.TYPE_OF_RENOVATION_CHOICES, required=False, ApiParamEnum(name='type_of_apartment', choices=Order.TYPE_OF_APARTMENT_CHOICES, required=False,
default=Order.CHOICE_UNDEFINED, default=Order.CHOICE_UNDEFINED,
description="Тип ремонта: {choices}"), description="Вид объекта: {choices}"),
ApiParamEnum(name='type_of_house', choices=Order.TYPE_OF_HOUSE_CHOICES, required=False, ApiParamEnum(name='type_of_house', choices=Order.TYPE_OF_HOUSE_CHOICES, required=False,
default=Order.CHOICE_UNDEFINED, default=Order.CHOICE_UNDEFINED,
description="Тип дома: {choices}"), description="Тип дома: {choices}"),
ApiParamEnum(name='type_of_room', choices=Order.TYPE_OF_ROOM_CHOICES, required=False, ApiParamEnum(name='type_of_room', choices=Order.TYPE_OF_ROOM_CHOICES, required=False,
default=Order.CHOICE_UNDEFINED, default=Order.CHOICE_UNDEFINED,
description="Тип квартиры: {choices}"), description="Тип квартиры: {choices}"),
ApiParamInt(name='number_of_rooms', required=True, value_min=-1, value_max=100,
description="Количество комнат, -1 = студия"),
ApiParamBoolean(name="is_balcony", default=True, description="Балкон"),
ApiParamBoolean(name="is_loggia", default=True, description="Лоджия"),
ApiParamStr(name='state_of_room', max_length=40, description="Состояние помещения",
required=False, default=""),
ApiParamFloat(name='square', value_max=99999.99, value_min=1.0,
description='Площадь в м²'),
ApiParamFloat(name='ceiling_height', value_max=99.99, value_min=1.0,
description='Высота потолков в м'),
ApiParamEnum(name='type_of_renovation', choices=Order.TYPE_OF_RENOVATION_CHOICES, required=False,
default=Order.CHOICE_UNDEFINED,
description="Тип ремонта: {choices}"),
ApiParamBoolean(name="is_redevelopment", required=False, default=True,
description="Требуется перепланировка"),
ApiParamBoolean(name="is_leveling_floors", required=False, default=False,
description="Требуется выравнивание полов"),
ApiParamBoolean(name="is_heated_floor", required=False, default=False,
description="Теплый пол"),
ApiParamBoolean(name="is_leveling_walls", required=False, default=False,
description="Требуется выравнивание стен"),
ApiParamStr(name='type_of_ceiling', max_length=40, description="Тип потолка",
required=False, default=""),
ApiParamBoolean(name="is_wiring_replace", required=False, default=False,
description="Требуется замена проводки"),
ApiParamBoolean(name="is_require_design", required=False, default=False,
description="Требуется дизайн проект"),
ApiParamEnum(name='purchase_of_material', choices=Order.PURCHASE_OF_MATERIAL_CHOICES, ApiParamEnum(name='purchase_of_material', choices=Order.PURCHASE_OF_MATERIAL_CHOICES,
required=False, default=Order.CHOICE_UNDEFINED, required=False, default=Order.CHOICE_UNDEFINED,
description="Закуп материала: {choices}"), description="Закуп материала: {choices}"),
# дальше отдельные флаги
ApiParamBoolean(name="is_with_warranty", required=False, default=True,
description="С гарантией"),
ApiParamBoolean(name="is_with_contract", required=False, default=False, ApiParamBoolean(name="is_with_contract", required=False, default=False,
description="Работа по договору"), description="Работа по договору"),
ApiParamBoolean(name="is_with_warranty", required=False, default=True,
description="С гарантией"),
ApiParamBoolean(name="is_with_trade", required=False, default=False, ApiParamBoolean(name="is_with_trade", required=False, default=False,
description="Возможен торг"), description="Возможен торг"),
ApiParamBoolean(name="is_with_cleaning", required=False, default=False, ApiParamBoolean(name="is_with_cleaning", required=False, default=False,
description="С уборкой"), description="С уборкой"),
ApiParamBoolean(name="is_with_garbage_removal", required=False, default=False,
description="С вывозом мусора"),
ApiParamBoolean(name="is_require_design", required=False, default=False,
description="Требуется дизайн проект"),
# примерная цена
ApiParamFloat(name='approximate_price', value_max=9999999999.99, value_min=1.0,
description='Примерная цена'),
# date_start = models.DateField(null=True, blank=True, default=None, verbose_name="Дата начала") # date_start = models.DateField(null=True, blank=True, default=None, verbose_name="Дата начала")
# date_end = models.DateField(null=True, blank=True, default=None, verbose_name="Дата окончания") # date_end = models.DateField(null=True, blank=True, default=None, verbose_name="Дата окончания")
ApiParamEnum(name="address_city", description="Город: {choices}", choices=CITIES_CHOICES), ApiParamFloat(name='approximate_price', value_max=9999999999.99, value_min=1.0,
description='Примерная цена'),
ApiParamStr(name='description', max_length=1000, description="Описание заказа",
required=False, default=""),
ApiParamStr(name='video_link', max_length=160, description="Ссылка на видео",
required=False, default=""),
ApiParamStr(name='address_text', max_length=70, description="Улица, дом",
required=False, default="")
# email = models.EmailField(null=True, blank=True, verbose_name="Email") # email = models.EmailField(null=True, blank=True, verbose_name="Email")
# phone = models.CharField(null=True, blank=True, max_length=16, verbose_name="Телефон") # phone = models.CharField(null=True, blank=True, max_length=16, verbose_name="Телефон")
], ],

View File

@ -253,7 +253,7 @@ class Order(models.Model):
(TYPE_OF_APARTMENT_SECONDARY, 'Вторичка') (TYPE_OF_APARTMENT_SECONDARY, 'Вторичка')
] ]
type_of_apartment = models.CharField(max_length=10, choices=TYPE_OF_APARTMENT_CHOICES, blank=True, type_of_apartment = models.CharField(max_length=10, choices=TYPE_OF_APARTMENT_CHOICES, blank=True,
default=CHOICE_UNDEFINED, verbose_name="Тип квартиры") default=CHOICE_UNDEFINED, verbose_name="Вид объекта")
# тип дома # тип дома
TYPE_OF_HOUSE_BLOCK = 'block' TYPE_OF_HOUSE_BLOCK = 'block'
@ -261,6 +261,7 @@ class Order(models.Model):
TYPE_OF_HOUSE_MONOLITH = 'monolith' TYPE_OF_HOUSE_MONOLITH = 'monolith'
TYPE_OF_HOUSE_PANEL = 'panel' TYPE_OF_HOUSE_PANEL = 'panel'
# TODO добавить чойсов, их на самом деле больше
TYPE_OF_HOUSE_CHOICES = [ TYPE_OF_HOUSE_CHOICES = [
(TYPE_OF_HOUSE_BLOCK, 'Блочный'), (TYPE_OF_HOUSE_BLOCK, 'Блочный'),
(TYPE_OF_HOUSE_BRICK, 'Кирпичный'), (TYPE_OF_HOUSE_BRICK, 'Кирпичный'),
@ -307,7 +308,7 @@ class Order(models.Model):
square = models.DecimalField(max_digits=7, decimal_places=2, blank=False, verbose_name="Площадь в м²") square = models.DecimalField(max_digits=7, decimal_places=2, blank=False, verbose_name="Площадь в м²")
# высота потолков # высота потолков
ceiling_height = models.DecimalField(max_digits=2, decimal_places=2, blank=False, ceiling_height = models.DecimalField(max_digits=4, decimal_places=2, blank=False,
verbose_name="Высота потолков в м") verbose_name="Высота потолков в м")
# Раздел "Ремонт" # Раздел "Ремонт"
@ -332,9 +333,9 @@ class Order(models.Model):
is_leveling_walls = models.BooleanField(default=False, verbose_name="Выравнивать стены") is_leveling_walls = models.BooleanField(default=False, verbose_name="Выравнивать стены")
type_of_ceiling = models.CharField(max_length=40, blank=True, default=CHOICE_UNDEFINED, type_of_ceiling = models.CharField(max_length=40, blank=True, default=CHOICE_UNDEFINED,
verbose_name="Потолок") verbose_name="Тип потолка")
is_wiring_replace = models.BooleanField(default=False, verbose_name="Замена проводки") is_wiring_replace = models.BooleanField(default=False, verbose_name="Требуется замена проводки")
is_require_design = models.BooleanField(default=False, verbose_name="Требуется дизайн проект") is_require_design = models.BooleanField(default=False, verbose_name="Требуется дизайн проект")
# закуп материала # закуп материала
@ -362,10 +363,11 @@ class Order(models.Model):
description = models.TextField(blank=True, verbose_name="Описание") description = models.TextField(blank=True, verbose_name="Описание")
# TODO сделать ссылку на видео video_link = models.CharField(max_length=160, blank=True, default=CHOICE_UNDEFINED,
verbose_name="Ссылка на видео")
email = models.EmailField(null=True, blank=True, verbose_name="Email") email = models.EmailField(blank=True, verbose_name="Email")
phone = models.CharField(null=True, blank=True, max_length=16, verbose_name="Телефон", validators=[ phone = models.CharField(blank=True, max_length=16, verbose_name="Телефон", validators=[
RegexValidator(regex="^\\+7[0-9]{10}$") RegexValidator(regex="^\\+7[0-9]{10}$")
]) ])