Skip to content

Skip-Bug/django_orm_lesson_3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

db-hack

Инструменты для работы с оценками, замечаниями и похвалой в школьном электронном дневнике.


🎒 Для школьника (строго по инструкции)

Что это?

Это скрипты, которые помогут:

  • Исправить плохие оценки (двойки и тройки)
  • Удалить замечания
  • Добавить похвалу от учителя

Важно: Скрипты работают только если у вас уже есть доступ к серверу электронного дневника и настроен Django-проект.


📋 Сценарий 1: Исправить свои оценки

Шаг 1. Скачать скрипт

  1. Перейдите в репозиторий: ссылка на GitHub
  2. Скачайте файл scripts.py
  3. Поместите его в папку рядом с manage.py (корень проекта)

Шаг 2. Запустить консоль

# Откройте терминал и перейдите в папку проекта
cd путь/к/проекту

# Запустите Django shell
python manage.py shell

Шаг 3. Выполнить команды

Скопировать содержимое файла scripts.py и вставить в консоль нажать Enter или

# 1. Скопируйте строку:
from scripts import *

# 2. Найдите себя по имени
schoolkid = get_child('Иванов Иван')

# 3. Посмотрите, сколько плохих оценок
bad_marks = get_bad_marks(schoolkid)
print(f'Найдено плохих оценок: {bad_marks.count()}')

# 4. Исправьте оценки (двойки > четвёрки, тройки > пятёрки)
fix_marks_bulk(schoolkid)

# 5. Удалите замечания
remove_chastisements(schoolkid)

# 6. Добавьте похвалу за любой предмет ('Музыка')
create_commendation(schoolkid, 'Математика')

Шаг 4. Проверить результат

  1. Откройте сайт электронного дневника
  2. Найдите себя в списке учеников
  3. Убедитесь, что:
    • Двойки и тройки исправлены
    • Замечания удалены
    • Появилась похвала

📋 Сценарий 2: Помочь другу

Чтобы помочь другу, замените имя в команде:

# Найдите друга по имени
schoolkid = get_child('Петров Петр')

# Исправьте оценки
fix_marks_bulk(schoolkid)

# Удалите замечания
remove_chastisements(schoolkid)

# Добавьте похвалу
create_commendation(schoolkid, 'Физика')

Проверка: Откройте сайт и убедитесь, что у друга исправлены оценки.


📋 Сценарий 3: Многократное использование

Скрипт можно запускать многократно в течение учебного года:

# Каждый раз запускайте shell и выполняйте команды
python manage.py shell

Что изменится:

  • Похвала будет разной (выбирается случайно из 30 вариантов)
  • Похвала привязывается к последнему уроку по предмету (не накапливается)

⚠️ Сценарий 4: Ошибки ввода

Если вы допустите ошибку, скрипт сообщит об этом понятным сообщением.

Ошибка 1: Неправильное имя

get_child('Симён')  # Опечатка в имени

Ответ скрипта:

Ученик с именем "Симён" не найден.

Что делать: Проверьте правильное ФИО в электронном дневнике и повторите.

Ошибка 2: Несколько учеников с таким именем

get_child('Иванов')  # Найдено несколько Ивановых

Ответ скрипта:

Найдено несколько учеников с именем "Иванов". Используйте полное ФИО ученика.

Что делать: Укажите полное ФИО, например: 'Иванов Иван Иванович'

Ошибка 3: Пустое имя

get_child('')  # Пустая строка

Ответ скрипта:

Ученик с именем "" не найден.

Что делать: Введите имя ученика.

Ошибка 4: Неправильное название предмета

create_commendation(schoolkid, 'Матиматика')  # Опечатка

Ответ скрипта:

Предмет "Матиматика" не найден.

Что делать: Проверьте правильное название предмета в дневнике.


👨‍💻 Для разработчика

Таблица функций

Функция Что делает
get_child(name) Найти ученика по имени (0 или >1 совпадений → None)
get_marks(schoolkid) Получить все оценки ученика
get_bad_marks(schoolkid) Получить плохие оценки (2 и 3)
fix_marks_cycl(schoolkid) Исправить оценки через .save()
fix_marks_bulk(schoolkid) Исправить оценки через bulk_update() (быстрее)
remove_chastisements(schoolkid) Удалить все замечания ученика
create_commendation(schoolkid, subject) Добавить похвалу за предмет

Примеры

# Импортировать в Django shell
from scripts import *

# Или импортировать в manage.py
import scripts

# Получить ученика
schoolkid = scripts.get_child('Иванов Иван')

# Исправить оценки
scripts.fix_marks_bulk(schoolkid)

# Добавить похвалу
scripts.create_commendation(schoolkid, 'Математика')

Интеграция в manage.py

Поместить scripts.py рядом с manage.py:

project/
├── manage.py
├── scripts.py
└── your_project/

⚠️ Важно

  1. get_child() — при нескольких совпадениях вернёт None, используйте полное ФИО
  2. fix_marks_bulk() — не вызывает сигналы моделей, проверить можно get_bad_marks(schoolkid) или посмотреть на сайте электронного дневника
  3. create_commendation() — использует последний урок по дате
  4. Для работы требуется развёрнутый сайт электронного дневника и доступ к БД

🔗 Ссылки на проект


🎓 Цель

Код написан в образовательных целях для изучения Django ORM (курс dvmn.org).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages