Приложение Life Needs, системы Карта Успеха
Материал из m6a
Содержание
Общее описание
Приложение `life_needs` отвечает за управление жизненными потребностями пользователя. Каждая жизненная потребность принадлежит определенной категории и имеет свой приоритет и процент выполнения.
Модель данных
LifeNeed
class LifeNeed(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='life_needs') category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='life_needs') name = models.CharField(max_length=100) description = models.TextField(blank=True) completion_percentage = models.IntegerField(default=0) priority = models.IntegerField(unique=True) conditions_for_satisfaction = models.TextField(blank=True) dissatisfaction_risks = models.TextField(blank=True) satisfaction_methods = models.TextField(blank=True)
Методы модели
def clean(self): # Валидация процента выполнения if not (0 <= self.completion_percentage <= 100): raise ValidationError('Completion percentage must be between 0 and 100.')
def increase_completion(self, amount): # Увеличение процента выполнения self.completion_percentage = min(self.completion_percentage + amount, 100) self.save()
Функциональность
Основные операции
- Создание жизненных потребностей
- Редактирование жизненных потребностей
- Удаление жизненных потребностей
- Просмотр списка потребностей
- Просмотр деталей потребности
Управление приоритетами
- Повышение приоритета
- Понижение приоритета
- Автоматическое назначение приоритета при создании
Дополнительные функции
- Загрузка целей из JSON
- Отслеживание процента выполнения
- Управление условиями удовлетворения
URL маршруты
/life-needs/ ├── # Список потребностей ├── '<int:pk>/' # Детали потребности ├── 'create/<int:categories_id>/' # Создание ├── '<int:pk>/update/' # Обновление ├── '<int:pk>/delete/' # Удаление ├── 'load_goals/<int:life_need_id>/' # Загрузка целей ├── '<int:pk>/increase_priority/' # Повышение приоритета └── '<int:pk>/decrease_priority/' # Понижение приоритета
Формы
LifeNeedForm
class LifeNeedForm(forms.ModelForm): fields = [ 'name', 'description', 'category', 'conditions_for_satisfaction', 'dissatisfaction_risks', 'satisfaction_methods' ]
Валидация
- Проверка обязательных полей
- Валидация категории
- Проверка имени потребности
Шаблоны
Основные шаблоны
- `life_need_list.html` - список потребностей
- `life_need_detail.html` - детали потребности
- `life_need_form.html` - форма создания/редактирования
Особенности шаблонов
- Навигация по хлебным крошкам
- Табличное отображение данных
- Кнопки управления приоритетом
- Формы с валидацией
Тестирование
Модульные тесты
- Создание жизненной потребности
- Валидация процента выполнения
- Проверка уникальности приоритета
- Тест метода `increase_completion`
Проверяемые аспекты
- Корректность данных
- Ограничения модели
- Валидация полей
- Связи с категориями
Безопасность
Защита
- Декоратор `@login_required`
- Валидация данных
- Проверка прав доступа
- CSRF защита
Валидация
- Проверка процента выполнения
- Уникальность приоритета
- Обязательные поля
- Форматы данных
Интеграция
С другими приложениями
- Связь с категориями
- Связь с целями
- Интеграция с пользователями
Импорт данных
- Загрузка целей из JSON
- Массовое создание
- Обработка ошибок
- Логирование
Сигналы
Конфигурация
- (Опишите класс конфигурации приложения `LifeNeedsConfig`, например:
- `name` - `karta_uspeha.life_needs`
- `ready()` - Импорт сигналов
)
Обработка событий
- `post_save` - после сохранения
- `post_delete` - после удаления
- Обновление связанных данных
Особенности реализации
Управление приоритетами
- Автоматическое назначение
- Переупорядочивание
- Проверка уникальности
Отслеживание прогресса
- Процент выполнения
- Методы увеличения прогресса
- Ограничения значений
Дополнительные поля
- Условия удовлетворения
- Риски неудовлетворенности
- Методы удовлетворения