Руководство для разработчиков
Спасибо за интерес к развитию проекта HW Checker!
Как начать
Форкните репозиторий
Клонируйте свой форк:
git clone https://github.com/your-username/SE-XP.git cd SE-XP
Создайте виртуальное окружение и установите зависимости:
python -m venv venv source venv/bin/activate # На Windows: venv\Scripts\activate pip install -r requirements.txt
Создайте ветку для ваших изменений:
git checkout -b feature/your-feature-name
Стандарты кодирования
Python код
Следуйте PEP 8
Максимальная длина строки: 100 символов
Используйте понятные имена переменных и функций
Добавляйте docstrings ко всем публичным методам и классам
Пример docstring:
def create_homework(request):
"""
Создание нового домашнего задания.
Args:
request: HttpRequest объект
Returns:
HttpResponse с формой создания или редирект после сохранения
Raises:
ValidationError: Если данные формы невалидны
"""
pass
Django модели
Используйте
verbose_nameдля всех полейДобавляйте
Metaкласс сverbose_nameиverbose_name_pluralОпределяйте
__str__метод
Django представления
Используйте декораторы
@login_requiredи@student_required/@teacher_requiredДобавляйте docstrings с описанием GET и POST методов
Используйте messages framework для уведомлений пользователей
Тестирование
Перед отправкой PR убедитесь, что:
Все существующие тесты проходят:
cd hw_checker python manage.py test
Код работает локально:
python manage.py runserver
Нет ошибок в миграциях:
python manage.py makemigrations --check python manage.py migrate
Документация
При добавлении новой функциональности:
Обновите соответствующие .rst файлы в
docs/Добавьте docstrings к новым функциям и классам
Пересоберите документацию:
cd docs make html
Проверьте, что документация собирается без ошибок и корректно отображается
Процесс отправки изменений
Зафиксируйте изменения:
git add . git commit -m "Описание изменений"
Отправьте в свой форк:
git push origin feature/your-feature-name
Создайте Pull Request на GitHub
Опишите в PR:
Какую проблему решает
Какие изменения внесены
Как протестировать
Что следует включить в PR
✅ Описание изменений
✅ Тесты для новой функциональности
✅ Обновленную документацию
✅ Обновленный CHANGELOG.rst
✅ Docstrings для нового кода
Структура проекта
SE-XP/
├── docs/ # Документация Sphinx
│ ├── api/ # API документация
│ ├── conf.py # Конфигурация Sphinx
│ └── *.rst # Страницы документации
├── hw_checker/ # Django проект
│ ├── assignments/ # Основное приложение
│ │ ├── models.py # Модели данных
│ │ ├── views.py # Представления
│ │ ├── forms.py # Формы
│ │ ├── decorators.py # Декораторы
│ │ ├── urls.py # URL маршруты
│ │ └── templates/ # HTML шаблоны
│ └── hw_checker/ # Настройки проекта
│ └── settings.py
└── requirements.txt # Зависимости
Вопросы?
Если у вас есть вопросы:
Создайте Issue на GitHub
Напишите в обсуждения (Discussions)
Свяжитесь с мейнтейнерами проекта
Спасибо за ваш вклад! 🎉