|
|
@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
import uuid
|
|
|
|
|
|
|
|
from django.db import models
|
|
|
|
|
|
|
|
from django.core.validators import RegexValidator
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Apartament(models.Model):
|
|
|
|
|
|
|
|
"""Модель данных квартиры"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, edtitable=False, help_text="Уникальный индетификатор квартиры")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TODO: Нужно реализовать фотографии. Как вариант, сделать как в этой статье (https://habr.com/ru/articles/505946/)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
price = models.IntegerField(max_value=450000, help_text="Стоимость аренды квартиры за месяц")
|
|
|
|
|
|
|
|
bail = models.IntegerField(max_value=450000, help_text="Стоимость залога квартиры")
|
|
|
|
|
|
|
|
agencyСommission = models.IntegerField(max_value=450000, verbose_name="Коммисия агенству")
|
|
|
|
|
|
|
|
utilitiesPrice = models.CharField(max_length=100, help_text="Стоимость коммунальных услуг")
|
|
|
|
|
|
|
|
minimumLeasePeriod = models.IntegerField(max_value=60, help_text="Минимальный срок аренды в месяцах")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
address = models.CharField(max_length=100, help_text="Адрес квартиры")
|
|
|
|
|
|
|
|
description = models.TextField(max_length=300, help_text="Описание квартиры")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
perimetrs = models.FloatField(max_value=250, help_text="Количество квадратных метров")
|
|
|
|
|
|
|
|
rooms = models.IntegerField(max_value=10, help_text="Количество комнат")
|
|
|
|
|
|
|
|
ceilingHeight = models.FloatField(max_value=5, help_text="Высота потолков в метрах")
|
|
|
|
|
|
|
|
floor = models.IntegerField(max_value=50, help_text="Этаж квартиры")
|
|
|
|
|
|
|
|
floorHouse = models.IntegerField(max_value=50, help_text="Количество этажей в доме")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
phoneNumberRegex = RegexValidator(regex = r"^\+?1?\d{8,15}$")
|
|
|
|
|
|
|
|
phoneNumber = models.CharField(validators=[phoneNumberRegex], max_length=16, unique=True, help_text="Номер телефона для связи")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
timeToBus = models.IntegerField(max_value=60, help_text="Время до ближайшей автобусной остановки в минутах")
|
|
|
|
|
|
|
|
timeToTrain = models.IntegerField(max_value=60, help_text="Время до ближайшей Ж/Д станции в минутах")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"""Параметры квартиры"""
|
|
|
|
|
|
|
|
isFurniture = models.BooleanField(help_text="Имеется мебель в квартире")
|
|
|
|
|
|
|
|
isAnimal = models.BooleanField(help_text="Можно с питомцем")
|
|
|
|
|
|
|
|
isTelevision = models.BooleanField(help_text="Имеется телевизор в квартире")
|
|
|
|
|
|
|
|
isСhild = models.BooleanField(help_text="Можно с детьми")
|
|
|
|
|
|
|
|
isInternet = models.BooleanField(help_text="Проведен интернет в квартире")
|
|
|
|
|
|
|
|
isBathroom = models.BooleanField(help_text="Имеется санузел в квартире")
|
|
|
|
|
|
|
|
isRefrigerator = models.BooleanField(help_text="Имеется холодильник в квартире")
|
|
|
|
|
|
|
|
isWasher = models.BooleanField(help_text="Имеется стиральная машинка в квартире")
|
|
|
|
|
|
|
|
isAirConditioning = models.BooleanField(help_text="Имеется кондиционер в квартире")
|
|
|
|
|
|
|
|
isFreshRepair = models.BooleanField(help_text="Недавно был ремонт в квартире")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"""Параметры дома"""
|
|
|
|
|
|
|
|
isElevator = models.BooleanField(help_text="Имеется лифт в доме")
|
|
|
|
|
|
|
|
isParking = models.BooleanField(help_text="Имеется закрытая парковка у дома")
|
|
|
|
|
|
|
|
isGarbageChute = models.BooleanField(help_text="Имеется мусоропровод в доме")
|
|
|
|
|
|
|
|
isConcierge = models.BooleanField(help_text="Имеется консьерж в доме")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TODO: Нужно реализовать количество просмотров. Как вариант, сделать через IP (https://ru.stackoverflow.com/q/1233137)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dateCreate = models.DateField(auto_now_add=True, editable=False, help_text="Дата добавления квартиры")
|
|
|
|
|
|
|
|
|