Эти скрипты для работы с базой данных из задачи «Взламываем электронный дневник» курса 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). Выполните следующие действия:
- Откройте новое окно терминала.
- Перейдите с помощь команды
cd
в директорию с проектом Django (В ней можно увидеть файлmanage.py
) - Выполните команду:
В командной строке запустится интерактивная консоль Python, о чем сообщит надпись:
python manage.py shell
(InteractiveConsole)
. - Скопируйте все скрипты в
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
В результате выполнения функция вывела сообщение о том, что нет такого предмета у Фролова Ивана.