Приложение Activities, системы Карта Успеха
Материал из m6a
Содержание
Общее описание
Приложение `activities` отвечает за управление мероприятиями (активностями) в системе "Карта успеха". Каждое мероприятие связано с задачей и имеет определенную продолжительность и временные интервалы.
Модель данных
Activity
class Activity(models.Model): INTERVAL_CHOICES = [ ('not_important', 'Не важно'), ('morning', 'Утро'), ('afternoon', 'День'), ('evening', 'Вечер'), ('night', 'Ночь'), ]
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='activities') task = models.ForeignKey(Task, on_delete=models.CASCADE, related_name='activities') name = models.CharField(max_length=100) description = models.TextField(blank=True) start_time = models.DateTimeField(null=True, blank=True) duration = models.DurationField(default=timedelta(minutes=30)) is_completed = models.BooleanField(default=False) depends_on = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True) lead_time = models.DurationField(default=timedelta(days=1)) interval = models.CharField(max_length=20, choices=INTERVAL_CHOICES)
ActivityManager
- (Опишите пользовательский менеджер для модели `Activity`, если он используется, например:
- Методы для фильтрации активностей по времени, статусу и т.д.
)
Функциональность
Основные операции
- Создание мероприятий
- Редактирование мероприятий
- Удаление мероприятий
- Просмотр списка мероприятий
- Просмотр деталей мероприятия
Управление временем
- Планирование мероприятий
- Фильтрация по времени
- Расчет длительности
- Управление интервалами
Дополнительные функции
- Зависимости между мероприятиями
- Массовое обновление интервалов
- Календарное представление
- Планировщик мероприятий
URL маршруты
- (Перечислите URL маршруты приложения и их соответствие представлениям, например:
- `/activities/` - Список мероприятий
- `/activities/<int:pk>/` - Детали мероприятия
- `/activities/create/` - Создание мероприятия
- `/activities/<int:pk>/update/` - Редактирование мероприятия
- `/activities/<int:pk>/delete/` - Удаление мероприятия
- `/activities/calendar/` - Календарное представление мероприятий
)
Формы
ActivityForm
- (Опишите поля формы `ActivityForm`, например:
- `name` - CharField (поле для ввода названия)
- `description` - TextField (поле для ввода описания)
- `task` - ForeignKey (выбор задачи)
- `start_time` - DateTimeField (поле для ввода времени начала)
- `end_time` - DateTimeField (поле для ввода времени окончания)
- `duration` - IntegerField (поле для ввода длительности)
)
Шаблоны
Основные шаблоны
- `activity_list.html` - список мероприятий
- `activity_detail.html` - детали мероприятия
- `activity_form.html` - форма создания/редактирования
- `update_interval.html` - форма обновления интервалов
Особенности шаблонов
- Фильтрация мероприятий
- Отображение длительности
- Управление зависимостями
- Навигация по хлебным крошкам
Тестирование
Модульные тесты
- Создание мероприятия
- Валидация времени
- Расчет длительности
- Управление зависимостями
Проверяемые аспекты
- Корректность данных
- Ограничения модели
- Валидация полей
- Связи с задачами
Безопасность
Защита
- Декоратор `@login_required`
- Валидация данных
- Проверка прав доступа
- CSRF защита
Валидация
- Проверка времени
- Валидация длительности
- Обязательные поля
- Форматы данных
Интеграция
С другими приложениями
- Связь с задачами
- Связь с ресурсами
- Интеграция с пользователями
Сигналы
- `post_save` - после сохранения
- Обновление прогресса задачи
- Расчет длительности мероприятия
Особенности реализации
Управление временем
- Планировщик мероприятий
- Фильтрация по времени
- Расчет длительности
- Управление интервалами
Отслеживание зависимостей
- Ведущие мероприятия
- Время на подготовку
- Связи между мероприятиями
- Обновление статусов
Дополнительные поля
- Описание
- Интервал времени
- Длительность
- Статус выполнения