Reviewed-on: #3
ICPC-WEBPRINT
This platform helps contest participants to print their code using no drivers, only web application in any browser. Supports authorization, printing PDF for administrators and teachers.
Platform was already used on some events, like "The FPMI Cup : February, 2025" and "MIPT Open Programming Championship : April, 2025".
Instalation
Environment and Service
Both RX and TX servers have the same way to install dependencies. First, be sure to have venv globally installed on your system:
apt install python3-venv
# or
python3 -m pip install venv
After that create virtual environment:
cd print-tx # and then print-rx
python3 -m venv .venv
Enter environment and install dependencies from requirements.txt
:
source .venv/bin/activate
python3 -m pip install -r requirements.txt
Great! Now you have working system. You can start your project either running
python3 -m gunicorn wsgi_back:app -c gunicorn.py
in venv, or creating services on your Linux. Template could be found in example.serivce
file. After that you can start your web app with running:
systemctl start example.service
Setting Secrets
Change secret code, that is used to access RX server from TX in server-tx.json
and server-rx.json
.
Change salt and session secret key in server-tx/app/config.py
:
_SALT = '$2b$12$DE09JKsqy6Ii/zAxEAA5n.' #edit
_SECRET_SESSION_KEY = "GAZAKBAYEV-AHMET-PROJECT" #edit
You can also to set super admin user (it can add and remove others):
_SUPER_ADMINS = ( #edit
"god"
)
Accounts with login:password like "god:god" will be checked and created if not exist, when application start.
Setting ports
You can set port of TX part in file gunicorn.py
, and RX part in config file server-rx.json
. Using TX interface, in admin panel, you can configure RX server and get server-rx.json
to load it.
Setting default printer
Learn more about lp
service in Linux (Wiki).
Features
- Four groups: Super Admin, Admin (create and remove users, set configuration), Tutor (print PDF and code), Team Member (default, print only code)
- Print code & PDF
- Create & Delete users
- Statistic of printed pages & last printing time of member
- Setting RX server using UI
- Setting TX configuration: PDF Watermark and limits.
Setting user group
Groups are just team names! Use $root
for Admins, $tutor$
for Teachers and other names for members.
Interface
Team Member
Tutor
Админ Панель
Создание и Редактирование пользователя
Просмотреть данную галерею можно на NextCloud автора.