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

Team Member

Limit Example

Tutor

Tutor

Админ Панель

View1

View2

View3

View4

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

Create

Create Result

Update

Просмотреть данную галерею можно на NextCloud автора.

Description
Print web-service for ICPC and other group contest events, allowing to print, using only browser. Supports PDF printing.
Readme 155 KiB
Languages
Python 60.6%
HTML 32.5%
CSS 6.9%