12 KiB
12 KiB
Кортеж типа организации
INDIVIDUAL = 'individual'
LEGAL_ENTITY = 'legal_entity'
TENANT_TYPES = [
(INDIVIDUAL, 'Физическое лицо'),
(LEGAL_ENTITY, 'Юридическое лицо'),
]
ORGANIZATION_SUBTYPE_CHOICES = (
('NULL', '-------'),
('llc', 'ООО (Общество с ограниченной ответственностью)'),
('jsc', 'ЗАО (Закрытое акционерное общество)'),
('ojsc', 'ОАО (Открытое акционерное общество)'),
('sole_proprietorship', 'ИП (Индивидуальный предприниматель)'),
('self_employed', 'Самозанятый'),
)
Модель арендаторах
tenant_type(CharField): Тип арендатора (INDIVIDUAL, LEGAL_ENTITY).organization_type(CharField): Тип организации (llc, jsc, ojsc, sole_proprietorship, self_employed).trade_name(CharField): Торговое наименование арендатора.- Поля для физического лица:
tenant_name(CharField): Имя арендатора (максимум 255 символов).tenant_surname(CharField): Фамилия арендатора (максимум 255 символов).tenant_patronymic(CharField): Отчество арендатора (максимум 255 символов).tenant_passport_series(CharField): Серия паспорта арендатора (4 символа, обязательное поле).tenant_passport_number(CharField): Номер паспорта арендатора (6 символов, обязательное поле).tenant_passport_issued_by(CharField): Кем выдан паспорт арендатора (максимум 255 символов).tenant_passport_issued_date(DateField): Дата выдачи паспорта арендатора.tenant_registration(TextField): Прописка арендатора (большой текстовый блок для детального описания).
- Поля для юридического лица:
tenant_company_name(CharField): Название организации (максимум 255 символов).tenant_inn(CharField): ИНН организации (12 символов, обязательное поле).kpp(CharField): КПП организации (9 символов).tenant_ogrn(CharField): ОГРН организации (15 символов).bank_details(TextField): Реквизиты банка организации (большой текстовый блок для детального описания).
additional_info(TextField): Дополнительная информация об арендаторе.tenant_file(ManyToManyField): Связь со сканами документов арендатора.history(HistoricalRecords): История изменений модели.
Модель контактной информации
contact_type(CharField): Тип контакта (email, phone).attitude_contact_type(CharField): Атрибут контакта (Worker, private, Other_type).value(CharField): Значение контакта.tenant(ForeignKey): Ссылка на объект арендатора.first_name,last_name,organization,job_title,address(CharField): Дополнительные данные контакта.history(HistoricalRecords): История изменений модели.
Сериализатор
-
TenantSerializer:
tenantType(CharField): Тип арендатора.organizationType(CharField): Тип организации (юридического лица).tradeName(CharField): Название арендуемой организацией единицы недвижимости.tenantName(CharField): Имя арендатора (физического лица).tenantSurname(CharField): Фамилия арендатора (физического лица).tenantPatronymic(CharField): Отчество арендатора (физического лица).tenantPassportSeries(CharField): Серия паспорта арендатора (физического лица).tenantPassportNumber(CharField): Номер паспорта арендатора (физического лица).tenantPassportIssuedBy(CharField): Кем выдан паспорт арендатора (физического лица).tenantPassportIssuedDate(DateField): Дата выдачи паспорта арендатора (физического лица).tenantRegistration(TextField): Прописка арендатора (физического лица) или дополнительная информация (юридического лица).tenantCompanyName(CharField): Название организации арендатора (юридического лица).tenantInn(CharField): ИНН организации арендатора (юридического лица).KPP(CharField): КПП организации арендатора (юридического лица).tenantOgrn(CharField): ОГРН организации арендатора (юридического лица).bankDetails(CharField): Реквизиты банка организации арендатора (юридического лица).additionalInfo(TextField): Дополнительная информация о арендаторе.tenantFile(FileField): Скан документов арендатора.author(AuthorSerializer): Информация об авторе.createdAt(DateTimeField): Дата создания записи.updatedAt(DateTimeField): Дата обновления записи.
-
ContactSerializer:
contactTypeTenant(CharField): Тип контакта арендатора.attitudeContactTypeTenant(CharField): Атрибут контакта арендатора.valueTenant(CharField): Значение контакта арендатора.firstNameTenant(CharField): Имя арендатора (физического лица).lastNameTenant(CharField): Фамилия арендатора (физического лица).organizationTenant(CharField): Название организации арендатора (юридического лица).jobTitleTenant(CharField): Должность арендатора (юридического лица).addressTenant(CharField): Адрес арендатора.author(AuthorSerializer): Информация об авторе.createdAt(DateTimeField): Дата создания записи.updatedAt(DateTimeField): Дата обновления записи.
Маршрутизатор
- URL для списка и деталей арендаторов:
'': Пустая строка указывает на корневой URL приложения. Он включает в себя все URL изtenant_router.
- URL для контактов арендаторов:
'<int:id>/contacts': Этот URL позволяет получить список контактов для определенного арендатора с идентификаторомid. Он ссылается на представлениеContactTenantViewSet.
- URL для удаления контакта арендатора:
'<int:tenant_id>/contacts/<int:contact_id>/': Этот URL используется для удаления конкретного контакта для арендатора с идентификаторомtenant_idи идентификатором контактаcontact_id. Он ссылается на представлениеDeleteContactTenantView.
Контроллер
-
TenantView:
- Основной
viewsetдля моделиTenant. queryset: Устанавливает все объектыTenantв качестве запроса по умолчанию.serializer_class: ИспользуетTenantSerializerдля сериализации и десериализации данных.permission_classes: Устанавливает разрешения для доступа к представлениям (в данном случае, только аутентифицированные пользователи с правами владельца и администратора).lookup_field: Поле, используемое для поиска объектовTenant.filterset_class: Фильтры для списка арендаторов.http_method_names: Определяет доступные методы HTTP (GET, POST, PUT, DELETE).
- Основной
-
Методы TenantView:
list: Получает список арендаторов.create: Создает нового арендатора.retrieve: Получает детали конкретного арендатора.update: Обновляет данные арендатора.destroy: Удаляет арендатора.
-
ContactTenantViewSet:
- Представление для работы с контактами арендаторов.
queryset: Устанавливает все объектыContactв качестве запроса по умолчанию.serializer_class: ИспользуетContactSerializerдля сериализации и десериализации данных.permission_classes: Устанавливает разрешения для доступа к представлениям (в данном случае, только аутентифицированные пользователи).
-
Методы ContactTenantViewSet:
list: Получает список контактов для конкретного арендатора.post: Создает новый контакт для арендатора.
-
DeleteContactTenantView:
- Представление для удаления контакта арендатора.
destroy: Удаляет контакт.
Права доступа и разрешения
-
IsOwnerOrCollaborator:
- Разрешение для проверки доступа к объектам на основе их владельца или участника.
has_object_permission: Метод, который проверяет разрешение на доступ к конкретному объекту.- Разрешает доступ только для безопасных методов (GET, HEAD, OPTIONS) или если пользователь является владельцем объекта.
-
IsOwnerAndAdmin:
- Разрешение, позволяющее только авторам объектов Tenant и пользователям с группой 'admin' доступ к операциям CRUD.
has_permission: Метод, который проверяет разрешение на доступ к представлению (view), основанное на группе пользователя.- Разрешает доступ только для аутентифицированных пользователей с группой 'admin'.
has_object_permission: Метод, который проверяет разрешение на доступ к конкретному объекту.- Разрешает доступ для владельца объекта или для пользователя с группой 'admin'.