Приложение Goals, системы Карта Успеха
Материал из m6a
Содержание
Общее описание
Приложение `goals` отвечает за управление целями пользователя в системе "Карта успеха". Каждая цель связана с жизненной потребностью и имеет свой приоритет и процент выполнения.
Модель данных
Goal
class Goal(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='goals') life_need = models.ForeignKey(LifeNeed, on_delete=models.CASCADE, related_name='goals') name = models.CharField(max_length=100) description = models.TextField(blank=True) completion_percentage = models.IntegerField(default=0) priority = models.IntegerField()
Методы модели
def clean(self): # Валидация процента выполнения if not (0 <= self.completion_percentage <= 100): raise ValidationError('Completion percentage must be between 0 and 100.')
Функциональность
Основные операции
- Создание целей
- Редактирование целей
- Удаление целей
- Просмотр списка целей
- Просмотр деталей цели
Управление приоритетами
- Повышение приоритета
- Понижение приоритета
- Автоматическое назначение приоритета при создании
Дополнительные функции
- Отслеживание процента выполнения
- Связь с проектами
- Расчет длительности мероприятий
URL маршруты
/goals/ ├── # Список целей ├── '<int:pk>/' # Детали цели ├── 'create/<int:life_need_id>/' # Создание ├── '<int:pk>/update/' # Обновление ├── '<int:pk>/delete/' # Удаление ├── '<int:pk>/increase_priority/' # Повышение приоритета └── '<int:pk>/decrease_priority/' # Понижение приоритета
Формы
GoalForm
class GoalForm(forms.ModelForm): fields = ['name', 'description'] labels = { 'name': 'Название', 'description': 'Описание', }
Валидация
- Проверка обязательных полей
- Валидация описания (минимум 10 символов)
- Проверка процента выполнения
Шаблоны
Основные шаблоны
- `goal_list.html` - список целей
- `goal_detail.html` - детали цели
- `goal_form.html` - форма создания/редактирования
Особенности шаблонов
- Навигация по хлебным крошкам
- Табличное отображение данных
- Кнопки управления приоритетом
- Формы с валидацией
Тестирование
Модульные тесты
- Создание цели
- Валидация процента выполнения
- Проверка уникальности приоритета
- Тест обязательных полей
Проверяемые аспекты
- Корректность данных
- Ограничения модели
- Валидация полей
- Связи с жизненными потребностями
Безопасность
Защита
- Декоратор `@login_required`
- Валидация данных
- Проверка прав доступа
- CSRF защита
Валидация
- Проверка процента выполнения
- Уникальность приоритета
- Обязательные поля
- Форматы данных
Интеграция
С другими приложениями
- Связь с жизненными потребностями
- Связь с проектами
- Интеграция с пользователями
Сигналы
- `post_save` - после сохранения
- `post_delete` - после удаления
- Обновление связанных данных
Особенности реализации
Управление приоритетами
- Автоматическое назначение
- Переупорядочивание
- Проверка уникальности
Отслеживание прогресса
- Процент выполнения
- Связь с проектами
- Расчет длительности
Дополнительные поля
- Описание
- Связь с жизненной потребностью
- Приоритет