Homepage: https://tleoj.edu.vn
Based on LQDOJ.
Supported languages:
- Assembly (x64)
- AWK
- Brainfxck
- C
- C++03 / C++11 / C++14 / C++17 / C++20
- Java 8 / Java 11
- Scratch
- Pascal
- Perl
- Python 2 / Python 3
- PyPy 2 / PyPy 3
Support plagiarism detection via Stanford MOSS.
Most of the setup are the same as DMOJ installations. You can view the installation guide of DMOJ here: https://docs.dmoj.ca/#/site/installation.
There is one minor change: Instead of git clone https://github.com/DMOJ/site.git
, you clone this repo git clone https://github.com/TLEJudge/online-judge.git
.
- To use newsletter (email sending), go to admin and create a newsletter.
- Change the domain name and website name in Admin page: Navigation Bars/Sites
- Missing the
local_settings.py
. You need to copy thelocal_settings.py
in order to pass the check. - Missing the problem folder in
local_settings.py
. You need to create a folder to contain all problem packages and configure inlocal_settings.py
. - Missing static folder in
local_settings.py
. Similar to problem folder, make sure to configureSTATIC_FILES
insidelocal_settings.py
. - Missing configure file for judges. Each judge must have a seperate configure file. To create this file, you can run
python dmojauto-conf
. Checkout all sample files here https://github.com/DMOJ/docs/blob/master/sample_files.
Suppose you finished all the installation. Everytime you want to run a local server, follow these steps:
- Activate virtualenv:
source dmojsite/bin/activate # Should replace your default ~/.bashrc
- Run server:
python manage.py runserver 0.0.0.0:80 #80 is a good idea? :kekw:
- Create a bridge (this is opened in a different terminal with the second step if you are using the same machine)
python manage.py runbridged # Use a tmux session, then detach it (I recommend doing so)
- Create a judge (another terminal)
dmoj 0.0.0.0 -p 9999 -c <path to yml configure file> # You may not have to do this
Here we suppose you use the default port 9999 for bridge in settings.py
. You can create multiple judges, each should be in a seperate terminal.
Optional
- Run celery worker (This is server's queue. It may be necessary in some functions)
celery -A dmoj_celery worker
- Run a live event server (So everything is updated lively like in the production)
node websocket/daemon.js
Most of the steps are similar to LQDOJ Docs. Here are two steps:
- Update vietnamese translation:
- If you add any new phrases in the code,
python manage.py makemessages
- go to
locale/vi
- modify
.po
file python manage.py compilemessages
python manage.py compilejsi18n
- Update styles (using SASS)
- Change .css/.scss files in
resources
folder ./make_style && python manage.py collectstatic
- Sometimes you need to
Ctrl + F5
to see the new user interface in browser.