Разработать сайт школьного расписания на Django

50 000 руб. за проект
31 мая 2023, 15:39 • 16 откликов • 110 просмотров
* создать на django

ftp на WEB сервере
сервер:
логин:
пароль:

* DB postgreSQL
сервер
кодировка БД UTF8
имя БД:
логин:
пароль:

json файл констант / можно увести в БД таблица constant
- храним название школы
- текст заглушки вместо пустого урока

* https
ссылка на монитор https://сайт/school/m1
- Доступ к сайту логин пароль доступа к страницам. (таблица users(id /login / e-mail / password шифрованый / роль)
Связка ключа логин/пароль храниться в куках сайта. 7 дней после последнего обращения.
форма ввода e-mail / password / восстановление доступа

* верстка на экран 3840 x 2160 пикселей
Вариант десктоп.
- данные - Понедельник - формируется из локальных данных устройства пользователя.
- данные - номер смены - подгружается согласно показываемого расписания.
- данные - дата. текущее время (у времени пульсирующие точки разделитель)- формируется из локальных данных устройства пользователя.
- остаток времени до подгрузки расписания другой смены. появляется когда активен флаг "совмещенный показ смен уроков". Справа вверху цифры счетчика 00
Данные вычисляет исходя из раздела "совмещенный показ смен уроков", показывает обратный отсчет.
При достижении счетчиком 00 показываем другую смену.
- название уроков обрезается под размер ячейки
- если в текущем дне нет данных по классу. то в поле предмета пишем "нет данных". только в первой строке дня. раскраска отсутствует.

- для формирования строки отображения расписания вначале просчитываем макс кол-во уроков у класса,Если у одного начало с номера 0, а у другого последний 8-ой, то выделить строк под 9-ть уроков.
резервируем макс число строк. На примере у 8А есть 1-й урок, а у 8Б есть 8-й урок. Для 10А также считаем сколько необходимо строк. Учитываем для всех в данной строке.
расписание звонков заполняем согласно начального урока.(контроль на окно(нет урока между уроками.1,2,4,5,6,7 пустое подсчитывается как урок.)
определяем какой урок является для данного класса первым.(таблица может начинаться с 0-вого, а у класса первый урок быть под номером 2) т.е. в данной строке номерация от первого урока относительно класса у которого оно есть.
пустые строки снизу и сверху не формируем (если по всей строке)
- завершившийся урок перекрасить в приглушенный цвет.(серый) Уроки которые ещё не прошли-черный тонкий шрифт. Урок который ближайший и идущий - черный толстый. (вид. примерно.как понедельник 9А)
- в таблице номера кабинетов прижимаются влево с отступом 10px. (на примере центруются.-игнорируем)
- Название предметов прижимаются влево с отступом 10px. Обрезаем/не показываем если не влазит в ячейку.
- время урока прижим влево, отступ 10px
- номер урока. прижим влево. отступ 10px.
- у выдачи страницы сайта два временных режима(первая и вторая смена) в админ настройках иметь возможность выставлять время вывода смены.
- если произошли изменения в расписании уроков по сравнению с прошлой неделей то подкрашиваем фон урока класса в красный цвет. закрашивается ячейка вся. без закруглений как на примере.
- если расписание звонков отличается от стандарта то подкрасить фон группы порядка уроков в красный цвет. закрашивается ячейка вся. без закруглений как на примере.
- изменение по кабинету. так-же как выше.

если в таблице показа классов указан разрыв между калассами (в админ панели) то у отделенного расписания показываются №урока и время радом с расписанием. В примере классы 10А и 11А

карусель:
- если необходимо вывести на экран картинок меньше чем влазит на экран то их показ центруем. без движения.
- если картинок к показу больше, то идет медленный скролинг (в админ панели предусмотреть выставление скорости прокрутки)
- картинки показываются согласно указанного расписания вывода. если время начала попало в вывод то картинку показываем.
- надпись под картинкой центруется.

1.описание данных.
id - номер записи в БД
class - описание класса
lesson_number - номер урока в расписании
time_lesson - время начала урока
time_lesson_flag - флаг изменения во времени урока. 1- есть изменения, красим красным, 0 - нет закрашивания.
discipline - описание дисциплины
discipline_flag - флаг изменения. 1- есть изменения, красим красным, 0 - нет закрашивания.
room_lesson - кабинет проведения урока
room_lesson_flag - флаг изменения. 1- есть изменения, красим красным, 0 - нет закрашивания.
day_of_week - день недели


* Админ панель. хранение куков логин/пароль 1 час. ссылка на админ https://сайт/admin на странице вывода расписания ссылки на админ панель нет.
- страница создание нового пользователя управление существующими. форма e-mail / временнный password (файл admin_экран-3)
После сохранения отправить ссылку на вход сайта и временный пароль доступа.
сброс забытого пароля. отправляем ссылку на мыло если пользователь есть в БД.

-Настройки (файл admin_экран-3)
начало второй смены. время часы минуты начала второй смены. время брать локальное пользователя. (например 12:25)
раздел "совмещенный показ смен уроков". Добавить флаг активации раздела.
добавить поле. Совместный показ смен за... (часы/минуты) за сколько начнется чередующийся показ смен расписания. Работает до времени начала второй смены. (например 01:15 Показ второй смены начнется в 11:10)
смена1. показ основной смены время минуты/ секунды. (после вы полнения условия по совместному показу выполнять этот пункт) (например 10:00 Будет показана 10 минут. После этого подгрузятся данные второй смены)
Если второй смены нет. то игнорируем эту настройку)
смена2. показ смежной смены время минуты/ секунды после показа основной смены1 по завершении времени показа повторить цикл смена1-смена2.
(после вы полнения условия по совместному показу выполнять этот пункт) (например 3:00 Показ три минуты. Далее возврат на первую смену)
добавить раздел "показ сегодня/завтра". Добавить флаг активации раздела.
добавить поле. показ сегодня мин/сек. Это условие работает до срабатывания условия совместного показа смен.
добавить поле. показ завтра мин/сек. Это условие работает до срабатывания условия совместного показа смен. принцип тот же что и со сменами экранов смен обучения.
добавить поле. период опроса БД для расписания. чч:мм


-Размещение классов в сетке расписания. (файл admin_экран-2)
добавить поле выпадающий список выбор монитора. (монитор1/монитор2 и т.д)
поле выбор смены. позволяет создать группу классов выводимых на мониторое в одну смену. учитывать связку с монитором.
при выборе монитора из БД подгружаем по умолчанию данные "первой смены", если юзер выберет вторую смену то подгружает из БД вторую.
список доступных названий классов получаем из БД таблица расписаний.(timetable)

-Редактор слайдов карусели (файл admin_экран-1)
При кликаньи на поле фото открывается форма загрузки файла для карусели. (jpg, bmp, tif и т.д только статические форматы)
Автоматическая обрезка(не сжимаем) файла если его пропорции не соотвествуют заявленным в строке под фото.
Превью файла после обрезки.
указываем дату и время включения файла в карусель и дату и время окончания проигрывания в карусели.
текст надпись под фото содержит текст выводимый на монитор под фото. ограничить ввод количества текста, согласно возможности показа на мониторе расписания, с показом оставшихся для ввода символов.
Таблица со списком файлов загруженных на сервер и учтенных в бд. Те файлы которые не вошли в таблицу (загрузили фото но не создали расписание) удалять с сервера после выхода из формы редактора.
Таблица позволяет прокручивать список файлов. выставлять его статус активен/деактивирован. Перемещать файлы по списку в таблице между собой вверх или вниз.
Выставленная очередность в таблице является очередностью показа на сайте.

- предложить ситуацию отсутсвия данных в момент загрузки данных в таблицу расписания. в момент загрузки данные удаляются, затем загружаются обновленные.
Возможно пустое расписание. Как избежать. Обновление данных не чаще один раз в 1 час.

Файлы
Отзывы
Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Заказчик
Какаджан, это человек с хорошим чувством отвественности. Поэтому друзья если нужен ответственный разработчик, которого не надо пинать и заставлять обращайтесь к Какаджану. Всё сделано вовремя. Всегда был на связи.
Спасибо за работу.

Однозначно рекомендую, Какаджана, как ответственного исполнителя.

11 месяцев назад
R50 b42a31a7db851670b5ab52a11fcb5a4d
Фрилансер
Работать с заказчиком круто и все ясно! Спасибо!
11 месяцев назад