Git Product home page Git Product logo

lms's Introduction

Tests | docker Build and Push Docker Images

Min production stack: nginx, uwsgi, python3.x, Django 2.2.x, postgresql 11, redis (for queue)

Section Description
setup.md Some notes about dev and production setup.

lms's People

Contributors

atolstikov avatar ctrltz avatar dmi4er4 avatar pacahon avatar psicho avatar si14 avatar sokovis avatar superbobry avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lms's Issues

Перенести оценки за прошедшие семестры

Если с ФИ из таблички есть студент на сайте, поставить оценку за соответствующий курс. Вверху адрес прочтения, за которое должна стоять оценка. Столбики «Внешние курсы» пока не трогаем.

  1. Осень 2011.csv
  2. Весна 2012.csv
  3. Осень 2012.csv
  4. Весна 2013.csv
  5. Осень 2013.csv
  6. Весна 2014.csv

ФИО и Фамилия Имя Отчество

Cейчас в ведомости студенты пишутся как Фамилия И., а на странице д/з и /teaching с полным ФИО. Кажется разумным унифицировать отображение ФИО во всех шаблонах,

Графа Материалы в таблице с лекциями на сайте

Например, на этой странице http://compscicenter.ru/courses/images-and-video-1/2014-autumn/ всё ещё «слайды», а должно быть «материалы». И в соответствующих строках «слайды, видео, файлы», или «слайды, видео», или «видео, файлы», или «слайды, файлы», или что-то одно, или «нет».

Переработать заливку слайдов

Проблема

То, как сейчас заливаются слайды, очень хрупко и ломается с невнятными ошибками при первых же проблемах с яндекс.диском или слайдшарой.

Решение

Переписать этот кусок так, чтобы:

  • слайды заливались не синхронно с запросом, а отдельным процессом;
  • пока слайды не залились, они будут лежать у нас на сервере.

Плюсы

  • мы не будем фрустрировать пользователей неработающей заливкой слайдов;
  • если у яндекс.диска или слайдшары проблемы, мы просто зальём туда позже.

Минусы

Я их не вижу.

Подводные камни

  • шаманство вокруг периодических задач постепенно становится слишком шаманским. Возможно, нужно взять что-то вроде Celery;
  • нужно аккуратно сообщать о том, что слайды появятся позже (AJAX?).

Сохранение ведомости в localStorage

Проблема

Очень больно потерять заполненную ведомость из-за закрытой вкладки.

Решение

Вместо того, чтобы сохранять ведомость на сервер, лучше сохранять её в localState в браузере заполняющего.

Плюсы

  • невозможно потерять ведомость
  • мы не делаем кучу запросов на сервер из-за промежуточных сохранений
  • нажатие кнопки «сохранить» имеет более очевидную семантику «закоммитить изменения»
  • студенты получат письма о выставлении оценки более равномерно, а не в случайные моменты времени. Это особенно хорошо, если учесть, что преподаватель может несколько раз изменить оценку в поле, не нажимая «сохранить».

Минусы

  • более сложная логика на клиенте. Наивный подход с костылями на jQuery перестаёт работать — например, нужно упорядочить проверку на изменённость поля (и подсветить, если оно изменено) и загрузку сохранённого (если она есть). Очень хочется взять хотя бы React, а то и CLJS.

Подводные камни

  • нужно продумать, что делать, если пришедшая с сервера версия формы отличается от сохранённой (например, открыли две вкладки, в одной отредактировали и сохранили, в другой обновили страницу).

Разобраться с бэкапами

Хотим делать бэкапы базы/диска делать на амазоне, если ещё не.
В общем, надо выяснить, что для этого надо сделать, написать об этом админам JB. Но сначала сюда :)

Сделать кнопку «login as…» в админке

Для того, чтобы проверять багрепорты, очень удобна кнопка «залогиниться как…», позволяющая людям с доступом к админке залогиниться в качестве другого пользователя, не зная пароля и не меняя его. Есть несколько библиотек для этого, нужно оценить, какая лучше/хуже.

Cut для новостей

Неплохо как-нибудь обрезать новости, чтобы страница курса была конечного размера.

Вытянуть ID существующих слайдов на слайдшаре

Комментарии от @superbobry:

Логика уже реализована в fetch_slides.py. Текущий код вытягивает файл со слайдами, но его можно тривиально модифицировать для вытягивания и ID.
Какое-то время назад мы импортировали все слайды со слайдшары. Вытягивать ID теперь надо из embed кода в other_materials.
Аналогичный финт можно сделать с YouTube ID и для обоих заюзать oEmbed.
Прототип запилен в ветку feature/slideshare-id.

Добавить ещё два календаря

– для студентов: календарь с дедлайнами по заданиям
– для студентов и всех вообще пользователей: с мероприятиями вне занятий

Перенести оценки студентов за онлайн-курс по алгоритмам

  • Баллы в файле по ссылке.
  • Перенести их нужно в задание 94.
  • id в файле соответствует цифрам в поле id на Stepic на сайте.
  • Не все id из файла есть на сайте, то есть нужно проставить только тем студентам, которые указали id на Stepic и при этом записаны на курс по Алгоритмам и структурам данных 1.

Разбить раздел «ведомость» на подразделы

  1. Общая (основная страница)
    Собственно, та ведомость, что сейчас.
  2. По курсам

Список текущих прочтений со ссылками на ведомости такие, как у преподавателя, но только в режиме просмотра, без скачиваний и сохранений.

Осень 2014

  • Java (csv)
  • С++ (csv)
  • ...

Архив: весна 2014, осень 2013, весна 2013,....

Тема письма при рассылке писем

Когда высылаем оповещения, давай писать курс ещё в теме письма. Как это обычно делают? Я видела в квадратных скобочках перед всем остальным.
[Название курса] Остальной обычный текст

Local history для комментариев

Было бы приятно не терять их при случайной перезагрузке. Вроде бы поддержать local history несложно, что думаешь?

Рефакторинг textpages

Отсюда: 9bc0335

Предлагаю таки выпилить textpages из конфига:
Не надо деплоить сайтик, когда нужно поменять УРЛ существующей странички.
Проще проверять зависимости между страничками, прямо сейчас описаться где-нибудь -- раз плюнуть.

Перенести оценки студентов за онлайн-курс по архитектуре ЭВМ

  • Баллы в файле по ссылке.
  • Перенести их нужно в задание 95.
  • id в файле соответствует цифрам в поле id на Stepic на сайте.
  • Не все id из файла есть на сайте, то есть нужно проставить только тем студентам, которые указали id на Stepic и при этом записаны на курс по Введение в архитектуру ЭВМ и основы ОС.

Список заданий на странице пользователя

На странице пользователя-студента нужно сделать таблицу:

Название курса Название домашнего задания Cтутус(оценка)

Строки должны быть отсортированы сперва по курсу, затем по дедлайну д з, начиная с самого раннего. То есть сентябрьское задание по алгоритмам должно быть выше октябрьского задания по алгоритмам.

Видеть эту таблицу могут только суперпользователи.

Тестовый сайтик

Дима, а можешь где-нибудь сделать тестовую версию сайтика с копией текущей базы, без отправки писем? Мне нужно показать сайт изнутри со всех сторон другому человеку.

Добавить новый раздел

После «Как поступить» добавить «Видео».
– На этой странице нужно сделать «плитку» ссылок на страницы курсов.
– 3 курса в строке: название прочтения курса написано на картинке (будет в приложении к тикету позже).
– Прочтения отсортированы от самых новых (вверху) до самых старых.
– Отображаются только те, у которых есть галочка «показывать в разделе видео».

Сумма бейджей в верхнем меню

На самом деле с бейджами есть проблема ещё в том, что в меню преподавания у меня показывается количество бейджей меня-студента. Вроде бы это разные вещи.

Дело несрочное, лучше делать сильно позже.

Сортировка пользователей в админке

Нужно, чтобы сортировка пользователей в любом месте выбора (например, выбор преподавателей к курсу) была по алфавиту и Фамилия Имя Отчество, а не Имя Отчество Фамилия.

Мелочи в отрисовке Markdown

  1. blockquote не рендерится, хотя документация marked утверждает, что поддержка есть.

  2. Блоки кода, содержащие <>, возбуждают то ли Highlight.js, то ли marked, пример:

    ```python
    >>> instance
    <SomeClass at 0xdeadbeef>
    ```   
    
  3. Отступы межде параграфами не отличаются от межстрочного интервала.

Отображение оценки < проходного балла на странице задания

Нужно показывать полученный балл / возможные баллы.

Кажется, на странице задания такое, но нужно проверить везде, где мы отображаем оценки.

От преподавателя:
«а можно ли сделать так, чтоб в ведомости показывались везде (полученный балл)/(возможные баллы)? Сейчас у тех, кто не преодолел минимум, показывается тупо "2", и эту двойку сложно отфильтровать от окружающих её 1/5, 2/5 и т.д.»

Добавить проекты

Проект – это, кажется, аналогия записи на курсы.

У него есть
– название,
– описание (опционально),
– студент (пользователь-студент на сайте),
– руководитель (строка вида Фамилия Имя Отчество, Организация),
– вид: практика или научно-исследовательская работа,
– семестр (как обычный наш семестр), в случае с НИР может быть несколько семестров,
– файл с презентацией (опционально).

Создавать и редактировать хотим из админки, публиковать на странице студента пока хоть ещё одним списком.

Проекты:

  • Название, под руководством строка-руководитель, семестр. Презентация.

Презентация – ссылка на файл с презентацией.

Ведомость преподавателя в .csv

Возле кнопки "Сохранить" в ведомости преподавателя нужно добавить кнопку "Сохранить и скачать".
По ней разумно(@superbobry?) сохранять все изменения и отдавать пользователю .csv файл с баллами.
Фамилия студента, Имя студента, задание 1, задание 2, задание 3, ...

Переделать страницу «Мои курсы» у студентов

http://compscicenter.ru/learning/courses/

  1. Хочется, чтобы здесь показывалось суммарное количество баллов по домашкам, если оценки ещё нет, либо оценка за курс, если она уже есть.
  2. Это только для тех курсов, на которые студент записан.
  3. Можно назвать первую часть «Курсы текущего семестра», а ниже, под нынешней таблицей, написать «Ранее сданные курсы».

Название – преподаватели – семестр – оценка

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.