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

Материал из m6a
Версия от 13:54, 30 марта 2025; Vshpagin (обсуждение | вклад) (Вспомогательные функции)

Перейти к: навигация, поиск

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

Приложение `categories` отвечает за управление категориями жизненных потребностей пользователя. Категории являются верхним уровнем иерархии в системе и служат для группировки жизненных потребностей.

Модель данных

Category

 class Category(models.Model):
   user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='categories')
   name = models.CharField(max_length=100)
   description = models.TextField(blank=True)
   completion_percentage = models.IntegerField(default=0)

Ограничения

  • Уникальность имени категории для каждого пользователя
  • Валидация процента выполнения (0-100%)
  • Связь с пользователем (CASCADE при удалении)

Функциональность

Основные операции

  • Создание категорий
  • Редактирование категорий
  • Удаление категорий
  • Просмотр списка категорий
  • Просмотр деталей категории

Дополнительные функции

  • Загрузка категорий из JSON
  • Загрузка жизненных потребностей для категории
  • Визуализация данных (графики)

URL маршруты

 /categories/
 ├──                     # Список категорий
 ├── '<int:pk>/'          # Детали категории
 ├── 'create/'            # Создание категории
 ├── 'update/<int:pk>/'   # Обновление категории
 ├── 'delete/<int:pk>/'   # Удаление категории
 ├── 'load-categories/'   # Загрузка из JSON
 ├── 'category_chart/'    # График категорий
 └── 'load_life_needs/<int:category_id>/'  # Загрузка потребностей

Представления (Views)

Основные представления

 @login_required
 def category_list(request)
 @login_required
 def category_detail(request, pk)
 @login_required
 def category_create(request)
 @login_required
 def category_update(request, pk)
 @login_required
 def category_delete(request, pk)

Вспомогательные функции

 def process_form(request, form, success_message, redirect_url)
 def handle_category_form(request, category=None)
 def category_chart(request)

Формы

CategoryForm

  • (Опишите поля формы `CategoryForm`, например:
    • `name` - CharField (поле для ввода названия категории)
    • `completion_percentage` - IntegerField (поле для ввода процента выполнения)

)

Шаблоны

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

  • `category_list.html` - список категорий
  • `category_detail.html` - детали категории
  • `category_form.html` - форма создания/редактирования
  • `category_chart.html` - визуализация данных

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

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

Визуализация данных

Графики

  • Полярная диаграмма категорий
  • Отображение процентов выполнения
  • Интерактивные подсказки
  • Кастомизированные цвета

Настройки графика

  • (Опишите настройки графика, используемые в Plotly, например:
    • Цветовая схема
    • Размер шрифта
    • Названия осей

)

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

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

  • Создание категории
  • Валидация процента выполнения
  • Уникальность имени категории
  • Значения по умолчанию
  • Строковое представление

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

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

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

Защита

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

Валидация

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

Интеграция

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

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

Импорт данных

  • Загрузка из JSON
  • Массовое создание
  • Обработка ошибок
  • Логирование