# -*- coding: utf-8 -*- # Сервис может # интерфейс учителя: # - логин # - выбор курса для работы # - привязка (или создание) репы для курса (можно через веб) # - прописывание соответствий ДЗ курса <-> путь в репе (можно через веб) # - clone всех реп учеников данного курса и базовой репы # - pull всех изменений реп студентов данного курса # - push всех новых коммитов учителя в репы студентов (+ save point опционально) # - changes по всем репам студентов данного курса с момента последнего save point (можно через веб) # - save point состояния реп студентов (можно через веб) # - разнесение изменений в базовой репе по репам студентов # соотвтествие путей в гите к курсам/домашкам храним у себя, какая домашка следующая для ученика - спрашиваем ЛМС # запросы к ЛМС # - get по токену получить ИД учителя, емейл и имя # - get по ИД учителя список его курсов (ИД, название) # - get по ИД курса список всех опубликованных домашек (ИД, название) # - get по ИД учителя и ИД курса список всех его студентов (ИД, емейл, имя) # - get по ИД курса + ИД студента + ИД домашки дай следующую доамашку (ИД, название) # - post ИД студента, ИД домашки - ДЗ принято # запросы к сервису # - get получение пользователя # - get def register_user(email, name): """ Создает пользователя в сервисе и возвращает токен пользователя для последующей работы """ user_token = '...' return user_token def get_user(email): """ Выбирает пользователя сервиса возвращает токен пользователя для последующей работы """ user_token = '...' return user_token def create_git_user(user): """ Создает пользователя в GitLab""" pass def get_users(emails): """ Выбирает пользователей GitLab и возвращает токены для последующей работы """ tokens = ['...', '...', '...', ] return tokens def create_repository(user, project_name): """ Создает проект (репу) в GitLab и возвращает токен репу """ repository_token = '...' return repository_token def get_repository(user, project_name): """ Возвращает токен репы """ repository_token = '...' return repository_token def make_user_project_master(user, project): """ Делает пользователя мастером в проекте """ pass def copy_files_to_repository(base_repository, files_path, target_repository, autor): """ Копирует файлы из базовой репы в целевую от имени автора """ pass def approve_homework(teacher, base_repository, student, target_repository, files_path): """ Принять домашку у студента, копировать новые файлы """ pass def make_save_point(teacher, students): """ зафиксировать точку в репах с принятыми домашками """ pass def get_last_changes(teacher, students, save_point=None): """ показать последние изменения в репах учеников относительно save point (последнего, если None) """ pass