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

6.2 KiB
Raw Permalink Blame History

Модели

  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'
  2. comment-delete: URL для удаления комментариев к статьям по их идентификатору.

    • articles/<str:slug>/comments/<int:id>
    • views.DeleteCommentView.as_view()
    • name='comment-delete'
  3. comment-todo-article: URL для создания и получения комментариев к задачам.

    • todos/<int:id>/comments
    • views.CommentTodoView.as_view()
    • name='comment-todo-article'
  4. 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: Удаление комментария по его идентификатору и идентификатору задачи.