grmaster
License
grmaster - tool for dividing students into groups
Copyright (C) 2015 Lutov V. S. <vslutov@yandex.ru>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Введение
Программа grmaster
предназначена для удобного и быстрого распределения
студентов первого курса на группы с учетом их пожеланий и уровня английского.
Домашняя страница проекта: https://vslutov.github.io/grmaster/
Программа писалась для факультета ВМК и учитывает его специфику.
- В каждой группе две английские подгруппы, которые могут быть как одного уровня знаний, так и разных.
- Все английские подгруппы и академические группы примерно одинакового размера.
- На каждом потоке свое количество групп, примерно одинакового размера.
- Потоки принципиально ничем не отличаются (разве что, студент может захотеть на какой-то конкретный поток.
Если у вас другие требования для распределения, то меняйте код программы так, как вам нужно, в рамках соблюдения лицензии GNU AGPL. Подробнее о коде читайте в разделе для программистов.
В случае возникновения проблем, пишите автору: Владимир Лютов mailto:vslutov@yandex.ru.
Быстрый старт
Если не хотите заморачиваться с установкой - откройте эту ссылку http://lutov.net/grmaster и переходите к пункту использование.
Если вы по каким-то причинам, решили настроить свой сервер или запустить приложение из консоли, то все равно прочитайте раздел использование, а потом переходите в раздел для программистов.
Использование
Итак, перед вами интерфейс веб-сервера, который обрабатывает информацию, которую вы в него загрузите. Процесс автоматического распределения состоит из 4 шагов.
- Загрузка шаблона на ваш компьютер.
- Добавление информации о студентах в шаблон (делается в табличном редакторе).
- Загрузка данных на сервер для обработки.
- Получение результата с сервера.
Рассмотрим этот процесс по шагам.
Загрузка шаблона
Нажмите кнопку Cкачать шаблон
.
Добавление информации о студентах
Шаблон - это табличный файл в формате .csv. Редактировать его удобно табличным редактором Microsoft Excel или LibreOffice Calc. Если у вас нет табличного редактора, можете бесплатно загрузить офисный пакет LibreOffice с сайта разработчика: https://www.libreoffice.org/download/libreoffice-fresh/.
Файл с информацией содержит (в порядке сверху-вниз):
- Настройки для
grmaster
. - Одна пустая строка.
- Заголовок для таблицы студентов.
- Таблица студентов.
- Еще одна пустая строка.
- Несколько дополнительных таблиц, разделенных одной строкой.
Настройки можно менять так, как вам нужно - программа сама подстроится под вас.
Доступные настройки:
-
stream_sizes
- количество групп на потоке (набор чисел в разных столбцах таблицы) -
english_header
- название столбца, в котором находится информация об уровне английского каждого студента -
english_per_group
- количество английских подгрупп в одной группе -
score_header
- название столбца с баллами студента -
friends_table
- название таблицы со связями между студентами, которые хотят учиться в одной группе (об устройстве таблицы смотри далее) -
stream_tables
- названия таблиц со списком студентов, хотящих попасть на каждый из потоков
Пример таблицы можно скачать вместе с исходным кодом. Файл называется example.csv.
В каждой таблице все столбцы должны быть подписаны в заголовке (первой строке после пустой строки).
Первый столбец в каждой таблице - это полное имя студента. Должно быть уникальным. Если на курсе есть полные тезки, снабдите их имена числовыми идентификаторами.
Для таблицы студентов желательно указать их суммарный или средний балл.
Студенты с одним уровнем английского должны иметь одинаковые значения в
поле english_header
.
Все дополнительные таблицы должны отделяться от предыдущей ровно одной пустой строкой. У них должны быть название и заголовок.
Поддерживаемые таблицы:
- Таблица со списком пар студентов, которые хотят учиться в одной группе.
- Таблицы со списком студентов, желающих попасть на первый, второй и третий потоки. Таблицы могут быть пустыми, но заголовки лучше бы были.
Заполните этот файл в соответсвии с вашими потребностями.
Загрузка данных на сервер
После того, как вы добавили в шаблон нужную информацию, сохраните его в формате
.csv
(ВАЖНО: grmaster
понимает только этот формат, не пытайтесь
загрузить .ods
или .xlsx
, ничего хорошего у вас не получится).
Загрузите готовую таблицу на сервер с помощью соответсвующего элемента интерфейса.
Получение результата
Скачайте результат.
Поздравляем! Вы получили очень хорошее распределение по группам для студентов первого курса. Возвращайтесь к нам через год и рекомендуйте это приложения своим знакомым с других факультетов.
Для программистов
Итак, grmaster
- это приложение на чистом python 3. Просто несколько файлов
с расширением .py
, объединенные в одну папку.
Зависимости
- Flask
- pytest
Как использовать?
Есть два пути общения с вычислительным ядром программы.
- Рекомендуется через браузер.
- Через консоль команда
grmaster
предоставляет интуитивный интерфейсgrmaster help
для справки.
Как установить?
Установка предполагает несколько взаимозаменяющих вариантов в зависимости от того, чего вы хотите.
- Рекомендуется установка с помощью Docker.
- Установка из pypi.
- Установка из исходных кодов.
Установка с помощью Docker удобна, если вы говорите на русском и кроме веб-интерфейса на собственном сервере вам ничего не нужно.
- Установите Docker.
docker pull vslutov/grmaster
docker run -d -p [номер порта]:8000 vslutov/grmaster
Установка из pypi удобна, если вам нужна обработка файлов в консоли или вы не хотите использовать docker.
pip install grmaster
grmaster test
Установка из исходных кодов удобна, если вы хотите поменять настройки сервера (порт, на котором он работает или язык).
- Скачайте репозиторий https://github.com/vslutov/grmaster.
-
python setup.py develop
илиpython setup.py install
Как перевести на новый язык?
Просто переведите grmaster/data/index.en.html
на ваш язык, сохраните в
формате index.LANG.html
в ту же папку и поменяйте настройки в файле
grmaster/setting.py
.
Сделайте, пожалуйста, после этого pull-request с переводом на github или напишите автору письмо mailto:vslutov@yandex.ru с приложенным переводом, чтобы вашими наработками могли пользоваться другие люди.
Как добавить новый функционал?
Посмотрите внимательно в файл grmaster/rules.py
, там находятся
правила распределения. Меняйте текст программы так, как вам нужно и
делайте pull-request, я с радостью добавлю ваше улучшение в программу.
Хорошего вам дня!