Files
we_pro_dock/BACKEND/PROPERTIES.md
2024-05-14 11:39:33 +03:00

213 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Модель статьи
1. **ObjectTypeNew**:
- Представляет типы недвижимости.
- `object_type` (CharField): Тип недвижимости (выбор из предустановленных значений).
- `name` (CharField): Название подтипа объекта.
- Связь с `User` для автора объекта.
- Имеет поля времени создания и обновления.
2. **PurposePremises**:
- Представляет назначение объектов недвижимости.
- `name` (CharField): Название назначения объекта.
- Имеет поля времени создания и обновления.
3. **Room**:
- Представляет помещение на этаже.
- `room_number` (CharField): Номер помещения.
- `plan_number` (CharField): Номер на поэтажном плане.
- `entrance` (CharField): Тип входа (выбор из предустановленных значений).
- `area` (DecimalField): Площадь помещения.
- Связь с изображением помещения.
- Имеет поля времени создания и обновления.
4. **Floor**:
- Представляет этажи в подъезде.
- `floor_number` (IntegerField): Номер этажа.
- Связь с изображением плана этажа.
- Имеет поля времени создания и обновления.
5. **Entrance**:
- Представляет подъезды в здании.
- `entrance_number` (IntegerField): Номер подъезда.
- Связь с изображением плана подъезда.
- Имеет поля времени создания и обновления.
6. **Building**:
- Представляет здания.
- `nomber_building` (CharField): Номер дома.
- `building_name` (CharField): Название здания.
- `year_built` (YearField): Год постройки здания.
- Имеет поля времени создания и обновления.
7. **Territory**:
- Представляет территории.
- `district` (CharField): Район.
- `microdistrict` (CharField): Микрорайон.
- Имеет поля времени создания и обновления.
8. **Cluster**:
- Представляет кластеры.
- `region` (CharField): Регион.
- `city` (CharField): Город.
- Имеет поля времени создания и обновления.
9. **Object**:
- Представляет объект недвижимости.
- `address` (CharField): Адрес объекта.
- `cadastre_number` (CharField): Кадастровый номер.
- Связь с типом объекта, назначением объекта, помещениями, этажами, подъездами, зданиями, территориями, и кластерами.
- Имеет поля времени создания и обновления.
## Сериализатор
1. **ObjectTypeNewSerializer**
- objectType (CharField): Строковое представление типа объекта.
- nameObjectType (CharField): Название типа объекта.
- author (AuthorSerializer): Сериализатор для автора объекта.
- createdAt (DateTimeField): Дата и время создания объекта.
- updatedAt (DateTimeField): Дата и время последнего обновления объекта.
2. **PurposePremisesSerializer**
- namePurposePremises (CharField): Название назначения помещения.
- author (AuthorSerializer): Сериализатор для автора назначения помещения.
- createdAt (DateTimeField): Дата и время создания назначения помещения.
- updatedAt (DateTimeField): Дата и время последнего обновления назначения помещения.
3. **RoomSerializer**
- roomNumber (CharField): Номер помещения.
- roomEntrance (CharField): Вход помещения.
- roomArea (CharField): Площадь помещения.
- author (AuthorSerializer): Сериализатор для автора помещения.
- createdAt (DateTimeField): Дата и время создания помещения.
- updatedAt (DateTimeField): Дата и время последнего обновления помещения.
4. **FloorSerializer**
- floorNumber (IntegerField): Номер этажа.
- floor_plan_image (ImagePropirtiesFloorPlanSerializer): Сериализатор для изображений плана этажа.
- author (AuthorSerializer): Сериализатор для автора этажа.
- createdAt (DateTimeField): Дата и время создания этажа.
- updatedAt (DateTimeField): Дата и время последнего обновления этажа.
5. **EntranceSerializer**
- entranceNumber (IntegerField): Номер подъезда.
- entrancePlanImage (ImagePropirtiesEntrancePlanSerializer): Сериализатор для изображений плана подъезда.
- author (AuthorSerializer): Сериализатор для автора подъезда.
- createdAt (DateTimeField): Дата и время создания подъезда.
- updatedAt (DateTimeField): Дата и время последнего обновления подъезда.
6. **BuildingSerializer**
- nombeBuilding (CharField): Номер здания.
- buildingName (CharField): Название здания.
- yearBuilt (CharField): Год постройки здания.
- author (AuthorSerializer): Сериализатор для автора здания.
- createdAt (DateTimeField): Дата и время создания здания.
- updatedAt (DateTimeField): Дата и время последнего обновления здания.
7. **TerritorySerializer**
- territoryDistrict (CharField): Район территории.
- territoryMicrodistrict (CharField): Микрорайон территории.
- author (AuthorSerializer): Сериализатор для автора территории.
- createdAt (DateTimeField): Дата и время создания территории.
- updatedAt (DateTimeField): Дата и время последнего обновления территории.
8. **ClusterSerializer**
- clusterRegion (CharField): Регион кластера.
- clusterCity (CharField): Город кластера.
- author (AuthorSerializer): Сериализатор для автора кластера.
- createdAt (DateTimeField): Дата и время создания кластера.
- updatedAt (DateTimeField): Дата и время последнего обновления кластера.
9. **ObjectSerializer**
- objectAddress (CharField): Адрес объекта.
- cadastreNumber (CharField): Кадастровый номер объекта.
- purposePremises (CharField): Назначение помещения объекта.
- technicalFeatures (CharField): Технические особенности объекта.
- objectFiles (FileField): Файлы, связанные с объектом.
- objectImages (ImageField): Изображения объекта.
- objectVideos (FileField): Видео, связанные с объектом.
- room (PrimaryKeyRelatedField): Связанные помещения объекта.
- floor (PrimaryKeyRelatedField): Связанные этажи объекта.
- entrance (PrimaryKeyRelatedField): Связанные подъезды объекта.
- building (PrimaryKeyRelatedField): Связанные здания объекта.
- territory (PrimaryKeyRelatedField): Связанные территории объекта.
- cluster (PrimaryKeyRelatedField): Связанные кластеры объекта.
- author (AuthorSerializer): Сериализатор для автора объекта.
- createdAt (DateTimeField): Дата и время создания объекта.
- updatedAt (DateTimeField): Дата и время последнего обновления объекта.
## Маршрутизатор
1. **properties-objecttypenew/** - URL для работы с типами объектов:
- GET: Получить список всех типов объектов или создать новый тип объекта.
- POST: Создать новый тип объекта.
2. **properties-purposepremises/** - URL для работы с назначениями помещений:
- GET: Получить список всех назначений помещений или создать новое назначение помещения.
- POST: Создать новое назначение помещения.
3. **properties-room/** - URL для работы с помещениями:
- GET: Получить список всех помещений или создать новое помещение.
- POST: Создать новое помещение.
4. **properties-floor/** - URL для работы с этажами:
- GET: Получить список всех этажей или создать новый этаж.
- POST: Создать новый этаж.
5. **properties-entrance/** - URL для работы с подъездами:
- GET: Получить список всех подъездов или создать новый подъезд.
- POST: Создать новый подъезд.
6. **properties-building/** - URL для работы со зданиями:
- GET: Получить список всех зданий или создать новое здание.
- POST: Создать новое здание.
7. **properties-territory/** - URL для работы с территориями:
- GET: Получить список всех территорий или создать новую территорию.
- POST: Создать новую территорию.
8. **properties-cluster/** - URL для работы с кластерами:
- GET: Получить список всех кластеров или создать новый кластер.
- POST: Создать новый кластер.
9. **properties-object/** - URL для работы с объектами:
- GET: Получить список всех объектов или создать новый объект.
- POST: Создать новый объект.
## Контроллер
1. **ObjectTypeNewViewSet**:
- `list`: Получает список всех типов объектов или создает новый тип объекта.
- `create`: Создает новый тип объекта.
- `retrieve`: Получает конкретный тип объекта по его идентификатору.
- `update`: Обновляет данные о типе объекта.
- `destroy`: Удаляет тип объекта.
2. **PurposePremisesViewSet**:
- `list`: Получает список всех назначений помещений или создает новое назначение помещения.
- `create`: Создает новое назначение помещения.
- `retrieve`: Получает конкретное назначение помещения по его идентификатору.
- `update`: Обновляет данные о назначении помещения.
- `destroy`: Удаляет назначение помещения.
3. **RoomViewSet**:
- `list`: Получает список всех помещений или создает новое помещение.
- `create`: Создает новое помещение.
- `retrieve`: Получает конкретное помещение по его идентификатору.
- `update`: Обновляет данные о помещении.
- `destroy`: Удаляет помещение.
4. **FloorViewSet**:
- `list`: Получает список всех этажей или создает новый этаж.
- `create`: Создает новый этаж.
- `retrieve`: Получает конкретный этаж по его идентификатору.
- `update`: Обновляет данные об этаже.
- `destroy`: Удаляет этаж.
5. **EntranceViewSet**:
- `list`: Получает список всех подъездов или создает новый подъезд.
- `create`: Создает новый подъезд.
- `retrieve`: Получает конкретный подъезд по его идентификатору.
- `update`: Обновляет данные о подъезде.
- `destroy`: Удаляет подъезд.
6. **BuildingViewSet**:
- `list`: Получает список всех зданий или создает новое здание.
- `create`: Создает новое здание.
- `retrieve`: Получает конкретное здание по его идентификатору.
- `update`: Обновляет данные о здании.
- `destroy`: Удаляет здание.
7. **TerritoryViewSet**:
- `list`: Получает список всех территорий или создает новую территорию.
- `create`: Создает новую территорию.
- `retrieve`: Получает конкретную территорию по ее идентификатору.
- `update`: Обновляет данные о территории.
- `destroy`: Удаляет территорию.
8. **ClusterViewSet**:
- `list`: Получает список всех кластеров или создает новый кластер.
- `create`: Создает новый кластер.
- `retrieve`: Получает конкретный кластер по его идентификатору.
- `update`: Обновляет данные о кластере.
- `destroy`: Удаляет кластер.
9. **ObjectViewSet**:
- `list`: Получает список всех объектов или создает новый объект.
- `create`: Создает новый объект.
- `retrieve`: Получает конкретный объект по его идентификатору.
- `update`: Обновляет данные об объекте.
- `destroy`: Удаляет объект.
## Проверка введенных данных
1. **validate_year(value)**:
- Это функция-валидатор, которая принимает значение года в виде строки.
- Она проверяет, что длина значения равна 4 символам и что значение состоит только из цифр.
- Если условия не соблюдаются, функция поднимает исключение ValidationError с соответствующим сообщением об ошибке.
2. **YearField(models.CharField)**:
- Это класс, который определяет поле модели Django для хранения года.
- Он наследуется от CharField и добавляет к нему функциональность валидации года.
- В конструкторе класса YearField устанавливаются максимальная длина поля в 4 символа и добавляется список валидаторов, включая validate_year.