Каталог содержит файл taiga_tokens.py. В файле находятся переменные token, headers и callback_url. headers выглядит следующим образом: {'Content-Type': 'application/json', 'Authorization': 'Bearer %s' % token} и используется при вызове функции requests.request().
| Функция | Аргументы | Описание |
|---|---|---|
| create_project(project_name, project_description) | название и описание проекта | Создает проект с переданным названием и описанием |
| delete_project(project_id) | id проекта | Удаляет проект по указанному id |
| invite_member_to_project(project_id, member_email) | id проекта, email пользователя | Добавляет пользователя member_email в проект с project_id |
| create_webhook(callback_url, project_id) | адрес получателя вебхуков и id проекта | Создает вебхук для указанного url, в указанном проекте |
| delete_webhook(webhook_id) | id вебхука | Удаляет вебхук по указанному id |
| calculate_score(marks_list) | json объект с оценками и весами заданий | Рассчитывает итоговую оценку пользователя и возвращает её |
| send_mark_after_stop(email) | email пользователя | Завершает выполнение программы при вызове команды stop из чат-бота |
| create_environment(email, course) | email пользователя, урок course | Данная функция инициализирует урок `course` для `email` пользователя |
| delete_environment(project_id) | id проекта | Данная функция завершает выполнение урока |
Данная функция инициализирует урок course для email пользователя.
callback_url и google_sheet. callback_url содержит адрес для вебхука. google_sheet содержит сценарий для урока.create_project с названием Training project for <email>.email с помощью invite_member_to_project. Проверяет зарегистрирован ли пользователь в Taiga. Если нет, уведомляет об этом в Zulip.create_webhook, для того чтобы получать уведомления о действиях пользователя.Данная функция завершает выполнение урока.
delete_webhook, с помощью информации, полученной из бд.delete_project.В этом файле находится блюпринт для фласка,содержащий сценарий, который зависит от этапа прохождения урока, на котором находится пользователь.
При регистрации вебхука, его содержимое записывается в json_content, сценарий урока хранится в переменной google_sheet,
# catching json object from webhook
json_content = request.get_json(force=True)
# get google sheet for taiga
google_sheet = get_values(RANGE_NAME='taiga')
На данном этапе, получаем информацию о стадии выполнения урока, листе оценок и email пользователя.
# get current stage
taiga_person = session.query(TaigaPerson).filter(TaigaPerson.user_id == json_content["by"]["id"]).first()
stage = taiga_person.stage
marks_list = taiga_person.marks_list
useremail = taiga_person.email
Затем происходит проверка выполнения пользователем необходимого действия в зависимости от стадии, на которой он находится.Далее приведен пример для проверки выполнения первого пункта.
if stage == 1:
# проверка действия
if json_content["action"] == "create" and json_content["type"] == "epic":
mark = 1
if mark == 0:
return send_message(useremail, google_sheet[stage+2][2])
Далее происходит обновление переменной с оценками, подсчет итоговой оценки с помощью функции calculate_score. После этого пользователю отправляется сообщение с оценкой и подробно расписанными баллами по пунктам, а также выставляется оценка в классрум с помощью функции send_score. Завершается выполнение скрипта запуском функции delete_environment, которая удаляет индивидуальноге окружение и запись из бд.
https://docs.taiga.io/webhooks.html
Формат получения информации из гугл-таблицы аналогичен, описанному в файле "Trello"
https://301.miem.vmnet.top/invite?state=taiga@pm21project