Приложение Goals, системы Карта Успеха — различия между версиями
Материал из m6a
Vshpagin (обсуждение | вклад) (→Goal) |
Vshpagin (обсуждение | вклад) (→GoalForm) |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 14: | Строка 14: | ||
=== Методы модели === | === Методы модели === | ||
− | + | def clean(self): | |
− | + | # Валидация процента выполнения | |
− | ) | + | if not (0 <= self.completion_percentage <= 100): |
+ | raise ValidationError('Completion percentage must be between 0 and 100.') | ||
== Функциональность == | == Функциональность == | ||
Строка 38: | Строка 39: | ||
== URL маршруты == | == 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 === | ||
− | + | class GoalForm(forms.ModelForm): | |
− | + | fields = ['name', 'description'] | |
− | + | labels = { | |
− | + | 'name': 'Название', | |
− | + | 'description': 'Описание', | |
− | + | } | |
=== Валидация === | === Валидация === |
Текущая версия на 13:43, 30 марта 2025
Содержание
Общее описание
Приложение `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` - после удаления
- Обновление связанных данных
Особенности реализации
Управление приоритетами
- Автоматическое назначение
- Переупорядочивание
- Проверка уникальности
Отслеживание прогресса
- Процент выполнения
- Связь с проектами
- Расчет длительности
Дополнительные поля
- Описание
- Связь с жизненной потребностью
- Приоритет