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

7.2 KiB
Raw Permalink Blame History

Кортежи статуса задачи

TASK_STATUS = (
('New', 'Новая'),
('Deleted', 'Удалено'),
('Waiting', 'Ожидание'),
('Done', 'Выполнена'),
)

Кортеж уровня важности

PRIORITY = (
('Low', 'Низкий'),
('Medium', 'Средний'),
('High', 'Высокий'),
)

Модель задачи

  1. author (ForeignKey): Ссылка на пользователя, который создал задачу.
  2. title (CharField): Название задачи (до 150 символов).
  3. summary (TextField): Краткое описание задачи.
  4. content (TextField): Подробное описание задачи.
  5. is_active (BooleanField): Флаг, указывающий на активность задачи.
  6. is_deleted (BooleanField): Флаг, указывающий на удаление задачи.
  7. priority (CharField): Приоритет задачи (выбор из предустановленных значений).
  8. status (CharField): Статус задачи (выбор из предустановленных значений).
  9. is_complete (BooleanField): Флаг, указывающий на завершение задачи.
  10. **start_time** (DateTimeField): Дата и время начала задачи.
  11. end_time (DateTimeField): Крайний срок выполнения задачи.
  12. created (DateTimeField): Время создания задачи (автоматически заполняется при создании).
  13. updated (DateTimeField): Время последнего обновления задачи (автоматически обновляется при изменениях).
  14. substacles (ManyToManyField): Связь между задачами, представляющая подзадачи текущей задачи.
  15. **favorites** (ManyToManyField): Пользователи, которые добавили задачу в избранное.
  16. suppliers (ManyToManyField): Пользователи, ответственные за выполнение задачи.
  17. supporters (ManyToManyField): Соисполнители задачи.
  18. observers (ManyToManyField): Пользователи, наблюдающие за выполнением задачи.
  19. **tags** (TaggableManager): Теги, связанные с задачей для удобной классификации.

Сериализатор

  1. TodoSerializer:
    • id (IntegerField): Идентификатор задачи.
    • title (CharField): Заголовок задачи.
    • description (CharField): Описание задачи.
    • body (CharField): Текст задачи.
    • tagList (ListField): Список тегов задачи.
    • is_complete (BooleanField): Завершена ли задача.
    • status (CharField): Статус задачи.
    • priority (CharField): Приоритет задачи.
    • is_deleted (BooleanField): Удалена ли задача.
    • is_active (BooleanField): Активна ли задача.
    • createdAt (DateTimeField): Дата и время создания задачи.
    • updatedAt (DateTimeField): Дата и время последнего обновления задачи.
    • startTimedAt (DateTimeField): Дата и время начала задачи.
    • endTimedAt (DateTimeField): Дата и время завершения задачи.
    • author (AuthorSerializer): Сериализатор автора задачи.
    • substacles (ListField): Список препятствий задачи.
    • favorited (BooleanField): Понравилась ли задача.
    • favoritesCount (IntegerField): Количество пользователей, отметивших задачу как понравившуюся.
    • supplierd (IntegerField): Идентификатор поставщика.
    • suppliersCount (IntegerField): Количество поставщиков.
    • supporterd (IntegerField): Идентификатор поддержки.
    • supportersCount (IntegerField): Количество поддерживающих.
    • observerd (IntegerField): Идентификатор наблюдателя.
    • observersCount (IntegerField): Количество наблюдателей.

Маршрутизатор

  • DefaultRouter из библиотеки rest_framework.routers автоматически создает маршруты для представлений на основе их названий и методов (например, GET, POST, PUT, DELETE). За вас обрабатывается большая часть создания URL-путей, что делает код более модульным и менее подверженным ошибкам.

  • todo_router.register('todos', views.TodoView, basename='todos') регистрирует представление TodoView для работы с задачами. Аргументы basename='todos' используются для создания имени маршрута, которое будет использоваться в генерации URL (например, todos-list, todos-detail, todos-create todos-edit todos-delete.).

  • todo_router.register('tags', views.TagView) регистрирует представление TagView для работы с тегами. Аналогично создаются маршруты для работы с тегами (tags-list, tags-detail, tags-create tags-edit tags-delete).

Контроллер

  1. TodoView:
    • Представление для работы с задачами (todos).
    • Использует ModelViewSet, который предоставляет CRUD-функциональность и многое другое.
    • Включает методы list, create, retrieve, update, destroy для обработки соответствующих HTTP-запросов.
    • Содержит дополнительные действия (favorite, feed) с использованием декоратора @action.

Права доступа

  1. IsOwnerOrCollaborator:

    • Позволяет редактирование задач только владельцу задачи или соисполнителям.
    • Метод has_object_permission проверяет, что запросы на изменение (методы, отличные от GET, HEAD и OPTIONS) выполняются только для владельца задачи или соисполнителей.
  2. CanViewTodoDetail:

    • Позволяет просмотр деталей задачи автору, соисполнителям, поставщикам, наблюдателям и избранным.
    • Метод has_object_permission проверяет, что пользователь является автором задачи, соисполнителем, поставщиком, наблюдателем или избранным.