Обзор проекта ============= HW Checker - это система для управления домашними заданиями, разработанная на Django. Основные возможности -------------------- Для студентов ~~~~~~~~~~~~~ * Просмотр списка курсов, на которые записан * Просмотр домашних заданий по каждому курсу * Отправка решений (файлы) * Просмотр оценок и комментариев преподавателя * Отслеживание статуса выполнения заданий * Таблица оценок по всем курсам Для преподавателей ~~~~~~~~~~~~~~~~~~ * Создание и управление курсами * Запись студентов на курсы * Создание домашних заданий в рамках курса * Редактирование заданий и курсов * Просмотр всех отправленных работ * Выставление оценок * Добавление комментариев к работам студентов * Фильтрация работ по статусу (все/непроверенные/проверенные) Архитектура ----------- Проект состоит из следующих компонентов: **Models (Модели)** * ``UserProfile`` - профили пользователей с ролями (студент/преподаватель) * ``Course`` - курсы с преподавателями и студентами * ``Homework`` - домашние задания в рамках курса * ``Submission`` - отправленные работы студентов **Views (Представления)** * Представления для авторизации * Dashboard для студентов (список курсов) * Dashboard для преподавателей (список своих курсов) * CRUD операции для курсов * CRUD операции для заданий * Управление студентами курса * Отправка и проверка работ **Forms (Формы)** * Регистрация пользователей с выбором роли * Создание и редактирование домашних заданий * Отправка решений (файловая загрузка) * Выставление оценок и отзывов **Decorators (Декораторы)** * Проверка роли пользователя (``student_required``, ``teacher_required``) * Контроль доступа к курсам и заданиям Организация курсов ------------------ Система построена на курсовой модели: 1. **Преподаватель** создает курс и может: * Управлять описанием курса * Записывать студентов на курс * Создавать домашние задания в рамках курса * Видеть только свои курсы 2. **Студенты** видят только те курсы, на которые они записаны: * Список заданий отображается по курсам * Каждое задание связано с конкретным курсом * Таблица оценок организована по курсам 3. **Домашние задания** всегда принадлежат курсу: * При создании задания указывается курс * Студенты могут отправить работу только один раз * Преподаватель может проверить все работы по заданию Технологии ---------- * **Django 5.2** - основной фреймворк * **SQLite** - база данных (по умолчанию) * **Bootstrap** - UI компоненты * **Sphinx** - генерация документации