104 lines
4.7 KiB
Markdown
104 lines
4.7 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
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](https://ru.wikipedia.org/wiki/Lp)).
|
|
|
|
## 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](https://cloud.gazakbayev.net/index.php/s/gqzmo9S8KFGcQLi?dir=/) автора. |