Приложение 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

  • (Опишите поля формы `GoalForm`, например:
    • `name` - CharField (поле для ввода названия)
    • `description` - TextField (поле для ввода описания)
    • `life_need` - ForeignKey (выбор жизненной потребности)
    • `completion_percentage` - IntegerField (поле для ввода процента выполнения)

)

Валидация

  • Проверка обязательных полей
  • Валидация описания (минимум 10 символов)
  • Проверка процента выполнения

Шаблоны

Основные шаблоны

  • `goal_list.html` - список целей
  • `goal_detail.html` - детали цели
  • `goal_form.html` - форма создания/редактирования

Особенности шаблонов

  • Навигация по хлебным крошкам
  • Табличное отображение данных
  • Кнопки управления приоритетом
  • Формы с валидацией

Тестирование

Модульные тесты

  • Создание цели
  • Валидация процента выполнения
  • Проверка уникальности приоритета
  • Тест обязательных полей

Проверяемые аспекты

  • Корректность данных
  • Ограничения модели
  • Валидация полей
  • Связи с жизненными потребностями

Безопасность

Защита

  • Декоратор `@login_required`
  • Валидация данных
  • Проверка прав доступа
  • CSRF защита

Валидация

  • Проверка процента выполнения
  • Уникальность приоритета
  • Обязательные поля
  • Форматы данных

Интеграция

С другими приложениями

  • Связь с жизненными потребностями
  • Связь с проектами
  • Интеграция с пользователями

Сигналы

  • `post_save` - после сохранения
  • `post_delete` - после удаления
  • Обновление связанных данных

Особенности реализации

Управление приоритетами

  • Автоматическое назначение
  • Переупорядочивание
  • Проверка уникальности

Отслеживание прогресса

  • Процент выполнения
  • Связь с проектами
  • Расчет длительности

Дополнительные поля

  • Описание
  • Связь с жизненной потребностью
  • Приоритет