Руководство для разработчиков

Спасибо за интерес к развитию проекта HW Checker!

Как начать

  1. Форкните репозиторий

  2. Клонируйте свой форк:

    git clone https://github.com/your-username/SE-XP.git
    cd SE-XP
    
  3. Создайте виртуальное окружение и установите зависимости:

    python -m venv venv
    source venv/bin/activate  # На Windows: venv\Scripts\activate
    pip install -r requirements.txt
    
  4. Создайте ветку для ваших изменений:

    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 убедитесь, что:

  1. Все существующие тесты проходят:

    cd hw_checker
    python manage.py test
    
  2. Код работает локально:

    python manage.py runserver
    
  3. Нет ошибок в миграциях:

    python manage.py makemigrations --check
    python manage.py migrate
    

Документация

При добавлении новой функциональности:

  1. Обновите соответствующие .rst файлы в docs/

  2. Добавьте docstrings к новым функциям и классам

  3. Пересоберите документацию:

    cd docs
    make html
    
  4. Проверьте, что документация собирается без ошибок и корректно отображается

Процесс отправки изменений

  1. Зафиксируйте изменения:

    git add .
    git commit -m "Описание изменений"
    
  2. Отправьте в свой форк:

    git push origin feature/your-feature-name
    
  3. Создайте Pull Request на GitHub

  4. Опишите в 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)

  • Свяжитесь с мейнтейнерами проекта

Спасибо за ваш вклад! 🎉