Приложение Goals, системы Карта Успеха

Материал из m6a
Версия от 13:43, 30 марта 2025; Vshpagin (обсуждение | вклад) (GoalForm)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Общее описание

Приложение `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` - после удаления
  • Обновление связанных данных

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

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

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

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

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

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

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