Files
we_pro_dock/BACKEND/COMMENTS.md
2024-05-14 16:58:27 +03:00

96 lines
6.2 KiB
Markdown
Raw Permalink 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. **Comment**:
- **`author`** (ForeignKey): Связывает поле с моделью пользователя, который создал комментарий.
- **`content`** (TextField): Текст комментария.
- **`created`** (DateTimeField): Дата и время создания комментария (автоматически добавляется).
- **`updated`** (DateTimeField): Дата и время последнего обновления комментария (автоматически).
2. **CommentArticles**:
- **`article`**(ForeignKey): Связь с моделью статьи (Article).
3. **CommentTodos**:
- **`todo`**(ForeignKey): Связь с моделью задачи (Todo).
4. **CommentTenant**:
- **`tenant`**(ForeignKey): Связь с моделью арендатора (Tenant).
5. **CommentGoods**:
- `**goods**`(ForeignKey): Связь с моделью имущества (Goods).
6. **CommentPropertyObject**:
- **`object`**(ForeignKey): Связь с моделью объекта (Object).
7. **CommentMaintenanceHistories**:
- `**maintenancehistory**`(ForeignKey): Связь с моделью истории обслуживания (MaintenanceHistory).
8. **CommentContract**:
- **`contract`**(ForeignKey): Связь с моделью контракта (Contract).
## Сериализатор
1. **CommentSerializer:**
- **`author`**(SerializerMethodField): который вызывает метод `get_author` для получения сериализованных данных об авторе комментария.
- **`createdAt`**(DateTimeField): с форматированием даты и времени в ISO 8601.
- `**updatedAt`**(DateTimeField): с форматированием даты и времени в ISO 8601.
- **`body`**(CharField): который использует поле content модели Comment.
- **Методы:**
- **`get_author`:** Получает сериализованные данные об авторе комментария.
- **`create`:** Создает новый комментарий с указанными данными, включая автора и связанный объект (article).
2. **CommentTodosSerializer:**
- `**author`**(SerializerMethodField):, который вызывает метод `get_author` для получения сериализованных данных об авторе комментария.
- **`createdAt`**(DateTimeField): с форматированием даты и времени в ISO 8601.
- **`updatedAt`**(DateTimeField): с форматированием даты и времени в ISO 8601.
- **`body`**(CharField): который использует поле content модели CommentTodos.
- **Методы:**
- **`get_author`:** Получает сериализованные данные об авторе комментария.
- `**create`:** Создает новый комментарий для задачи с указанными данными, включая автора и связанную задачу (todo).
## Маршрутизатор
1. **comment-article:** URL для создания и получения комментариев к статьям.
- `articles/<str:slug>/comments`
- `views.CommentView.as_view()`
- `name='comment-article'`
1. **comment-delete:** URL для удаления комментариев к статьям по их идентификатору.
- `articles/<str:slug>/comments/<int:id>`
- `views.DeleteCommentView.as_view()`
- `name='comment-delete'`
1. **comment-todo-article:** URL для создания и получения комментариев к задачам.
- `todos/<int:id>/comments`
- `views.CommentTodoView.as_view()`
- `name='comment-todo-article'`
1. **comment-todo-delete:** URL для удаления комментариев к задачам по их идентификатору.
- `todos/<int:todo_id>/comments/<int:comment_id>/`
- `views.DeleteCommentTodoView.as_view()`
- `name='comment-todo-delete'`
## Контроллер
1. **CommentView:**
- Это представление позволяет создавать и получать комментарии к статьям.
- `generics.ListCreateAPIView`: Для списка и создания комментариев.
- `get_permissions`: Проверка прав доступа.
- `post`: Создание комментария.
- `list`: Получение списка комментариев.
- `DestroyAPIView` не используется здесь, поэтому удаление комментариев не поддерживается.
2. **DeleteCommentView:**
- Это представление предназначено для удаления комментариев к статьям.
- `generics.DestroyAPIView`: Для удаления комментариев.
- `destroy`: Удаление комментария по его идентификатору и слагу статьи.
3. **CommentTodoView:**
- Это представление позволяет создавать и получать комментарии к задачам.
- `generics.ListCreateAPIView`: Для списка и создания комментариев.
- `get_permissions`: Проверка прав доступа.
- `post`: Создание комментария.
- `list`: Получение списка комментариев.
- `DestroyAPIView` не используется здесь, поэтому удаление комментариев не поддерживается.
4. **DeleteCommentTodoView:**
- Это представление предназначено для удаления комментариев к задачам.
- `generics.DestroyAPIView`: Для удаления комментариев.
- `destroy`: Удаление комментария по его идентификатору и идентификатору задачи.