exequit / hack_ediary_db

Скрипты для задачи «Взламываем электронный дневник» курса dvmn.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Скрипты для задачи «Взламываем электронный дневник» курса dvmn.org

Эти скрипты для работы с базой данных из задачи «Взламываем электронный дневник» курса dvmn.org, позволяющие исправлять ошибки, удалять замечания и добавлять похвалу.

Описание

Файл скриптов содержит следующие основные функции для работы с базой данных:

  • get_schoolkid - позволяет находить ученика по ФИО (в том числе по неполному);
  • fix_marks - отвечает за исправление плохих оценок на отличную для заданного ученика;
  • remove_chastisements - позволяет удалить все замечания заданного ученика;
  • add_commendation - предоставляет возможность добавить похвалу заданному ученику за последний урок по заданному предмету.

Функция get_schoolkid(name) принимает на вход строку name, в которой указывает неполное или полное имя ученика, и в результате работы проинформирует какой ученик был найден и возвратит экземпляр модели Schoolkid. Если по указанному имени будет найдено больше одного ученика или не найдено ни одного, то функция напишет предупреждение и вернет None

Функция fix_marks(schoolkid) принимает на вход экземпляр модели Schoolkid ученика schoolkid. В результате работы проинформирует о количестве исправленных оценок.

Функция remove_chastisements(schoolkid) принимает принимает на вход экземпляр модели Schoolkid ученика schoolkid. В результате работы проинформирует о количестве удаленных замечаний.

Функция add_commendation(schoolkid, subject_title) принимает принимает на вход экземпляр модели Schoolkid ученика schoolkid и строку с названием предмета. Функция выбирает случайную похвалу из строковой константы COMMENDATION_EXAMPLES. Далее ищет уроки по году учебы и букве класса ученика, и названию предмета. Если по заданным параметрам не удается найти уроки выводит предупреждение и прерывается. Иначе находит последний урок по заданному предмету и добавляет похвалу заданному ученику и информирует о успешном выполнении.

Строковая константа COMMENDATION_EXAMPLES содержит различные варианты похвалы. Ее можно дополнить, добавив строчку в заданном формате номер. текст похвалы, или исключить ненужные похвалы за счет удаления строк (не требует "перенумерации")

Запуск

Для подключения к базе данных сайта необходимо запустить интерактивную консоль (shell). Выполните следующие действия:

  1. Откройте новое окно терминала.
  2. Перейдите с помощь команды cd в директорию с проектом Django (В ней можно увидеть файл manage.py)
  3. Выполните команду:
    python manage.py shell
    В командной строке запустится интерактивная консоль Python, о чем сообщит надпись:(InteractiveConsole).
  4. Скопируйте все скрипты в shell (Открываем sripts.py, выделяем их Ctrl+A, копируем Ctrl+C, переходим в терминал, правой кнопкой мыши вызываем контекстное меню и нажимаем Вставить).

Примеры работы со скриптами

Продолжим работу с интерактивной консолью Python. Найдем ученика с именем "Ингиборга":

>>> child = get_schoolkid("Ингиборга")
No one schoolkid is returned. Please, make your search more accurate
>>> print(child)
None

Так как ученика с таким именем нет, функция вывела предупреждение и возвратила None. Найдем ученика с именем "Иван":

>>> child = get_schoolkid("Иван")
Multiple schoolkids are returned. Please, make your search more accurate
>>> print(child)
None

Так как учеников с таким именем несколько, функция вывела предупреждение и возвратила None. Найдем ученика с именем "Фролов Иван":

>>> child = get_schoolkid("Фролов Иван")
Got schoolkid: Фролов Иван Григорьевич 6А
>>> print(child)
Фролов Иван Григорьевич 6А

Функция нашла одного ученика с таким именем. Теперь можно исправлять плохие оценки, удалять замечания и добавлять похвалу. Исправим плохие оценки Фролова Ивана.

>>> fix_marks(child)
Fixed 262 marks

В результате выполнения функция вывела кол-во исправленных оценок. Удалим все замечания Фролова Ивана.

>>> remove_chastisements(child)
Removed 4 chastisements

В результате выполнения функция вывела кол-во удаленных замечаний. Добавим похвалу Фролову Ивану по Музыке.

>>> add_commendation(child, "Музыка")
Added commedation 'Сказано здорово – просто и ясно!' on 2019-05-25

В результате выполнения функция вывела текст и дату похвалы. Добавим похвалу Фролову Ивану по Праву.

>>> add_commendation(child, "Право")
No such subject or lesson for schoolkid. Please check subject title or timetable

В результате выполнения функция вывела сообщение о том, что нет такого предмета у Фролова Ивана.

About

Скрипты для задачи «Взламываем электронный дневник» курса dvmn.org


Languages

Language:Python 100.0%