Giter Club home page Giter Club logo

oioioi's Introduction

OIOIOI

SIO2 is a free platform for carrying out algorithmic contests and OIOIOI is its main component — the web interface.

Installation

Docker (for deployment)

You can manually use docker files to create images containing our services.

To run the infrastructure simply:

"OIOIOI_VERSION=<oioioi_version>" docker-compose up

Make sure to change default superuser password, same as in the automatic method.

To start additional number of workers:

"OIOIOI_VERSION=<oioioi_version>" docker-compose up --scale worker=<number>

as described in Docker docs.

Docker (for development) ~~~~~~~~~~~~~~~~~~~~~~~

Make sure you installed docker properly. The easiest way to do this:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Start docker service:

sudo systemctl start docker

Then add yourself to group docker -- to create a group use:

sudo groupadd docker
gpasswd -a $USER docker
newgrp docker

It is possible that you will need to log out and log in. Type docker ps into your terminal to check if everything was installed properly. If you skip the step above, you will either have to use sudo every time you use docker or use docker above 19.03 version with experimental features enabled.

Prepare the image with:

OIOIOI_UID=$(id -u) docker-compose -f docker-compose-dev.yml build

Then you can start oioioi with:

OIOIOI_UID=$(id -u) docker-compose -f docker-compose-dev.yml up -d
OIOIOI_UID=$(id -u) docker-compose -f docker-compose-dev.yml exec web python3 manage.py runserver 0.0.0.0:8000

to start the infrastructure in the development mode. Current dirrectory with the source code will be bound to /sio2/oioioi/ inside the running container.

oioioi web interface will be available at localhost:8000, and the user admin with password admin will be created.

Additionally you can bind config files and logs folder to the host:

id=$(docker create sio2project/oioioi-dev)  #Create oioioi container
docker cp $id:/sio2/deployment deployment  #Copy initial deployment folder from oioioi contanier
docker rm -v $id  #Remove unneeded container

Remember to also uncomment the appropriate volume binding in the web service description in the docker-compose-dev.yml.

Running tests on Docker

For testing purposes we use test.sh script located in oioioi directory. Note it's not the same directory you are connected to after using docker exec -it “web” /bin/bash. The default container id that you should use for running tests is "web":

docker-compose -f docker-compose-dev.yml exec "web" ../oioioi/test.sh
docker-compose -f docker-compose-dev.yml exec "web" ../oioioi/test.sh oioioi/{name_of_the_app}/

Running static code analysis tools locally (requires Docker) ~~~~~~~~~~~~~~~~~~~~~~~

The static code analysis tools currently in use for python code are black, isort, pep8 and pylint. All of them can be run locally using the run_static.sh shell script. In order for the script to work the web container from docker-compose-dev.yml needs to be running. The docker image for the project needs to be rebuild if you are migrating from and older Dockerfile version (rebuild the image if you are getting error messages that isort or black are not installed). Commands for building the image and starting up the containers are listed in the paragraphs above.

When running all tools at once or when running pep8 and pylint independently only the recently modified files (files modified in the most recent commit or staged changes) will be processed.

To run all tools at once:

./run_static.sh

To run one of the tools:

./run_static.sh black
./run_static.sh isort
./run_static.sh pylint
./run_static.sh pep8

Script toolbox for Docker (development) ~~~~~~~~~~~~~~~~~~~~~~~~~ Copy-pasting all Docker commands from GitHub can be tedious. Instead use a set of pre-prepared commands embedded into easy_toolbox.py. For help run easy_toolbox.py -h. Add custom commands by editing RAW_COMMANDS in the file. Script can be used with user-friendly CLI or by passing commands as arguments. Developer environment can be easily set up by running:

./easy_toolbox.py build
./easy_toolbox.py up
# wait for the scripts to finish migration (up to one minute)
./easy_toolbox.py run

For system requirements check easy_toolbox.py.

Manual installation (deprecated) ~~~~~~~~~~~~~~~~~~~

See INSTALL for instructions.

Upgrading

See UPGRADING for instructions.

Backup

Amanda is recommended for doing OIOIOI backups. Sample configuration with README is available in extra/amanda directory.

For developers

Documentation for developers:

Testing

OIOIOI has a big suite of unit tests. You can run them in following way:

  • test.sh - a simple test runner, use from virtualenv
  • tox [path/to/module[::TestClass[::test_method]]] [-- arg1 arg2 ...] - runs pytest in isolated environemnt

Supported args:

  • -n NUM - run tests using NUM CPUs
  • -v - increase verbosity
  • -q - decrease verbosity
  • -x - exit after first failure
  • -lf - runs only tests that failed last time
  • --runslow - runs also tests marked as slow

Usage

Well, we don't have a full-fledged User's Guide, but feel free to propose what should be added here.

Creating task packages

To run a contest, you obviously need some tasks. To add a task to a contest in OIOIOI, you need to create an archive, called task package. Here are some pointers, how it should look like:

Contact us

Here are some useful links:

oioioi's People

Contributors

a-dead-pixel avatar accek avatar apaszke avatar badochov avatar bdfhjk avatar cytadela8 avatar czyzmanski avatar donvel avatar filipochnik avatar geoff128 avatar jbhayven avatar jmolinski avatar kerram avatar maciej-kisiel avatar marmistrz avatar matrach avatar mborsz avatar mdebski avatar mgr0dzicki avatar michcioperz avatar mlazowik avatar mradamczyk avatar mrowqa avatar ordyh avatar pawlokoder avatar sio2dockerhub avatar tommalla avatar tudny avatar twalen avatar wosiu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

oioioi's Issues

Docker install fails with TeacherAuthBackend error

On the latest master (de2d573), standard Docker install ends up with:

Step 32/32 : RUN ./manage.py download_sandboxes -q -y -c /sio2/sandboxes
 ---> Running in dc7664e2c385
/home/oioioi/.local/lib/python2.7/site-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use "pip install psycopg2-binary" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.
  """)

Traceback (most recent call last):
  File "./manage.py", line 14, in <module>
    execute_from_command_line(sys.argv)
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/core/management/__init__.py", line 327, in execute
    django.setup()
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/apps/config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/local/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/sio2/oioioi/oioioi/teachers/models.py", line 14, in <module>
    raise ImproperlyConfigured("When using teacher module "
django.core.exceptions.ImproperlyConfigured: When using teacher module you have to activate TeacherAuthBackend
ERROR: Service 'web' failed to build: The command '/bin/sh -c ./manage.py download_sandboxes -q -y -c /sio2/sandboxes' returned a non-zero code: 1

By "standard Docker install" I mean:

$ docker build -t oioioi-base -f Dockerfile.base .
$ docker-compose up

When trying to use commit before 5b35be9, the same thing happens as in #26.

Can't view testrun result

The issue occurs when you view the submission related to a testrun.
Seems to be caused by checking whether the input file is a zip.
However, an internal server error is thrown regardless of the file format.

Traceback etc.
Environment:

Request Method: GET
Request URL: http://localhost:8000/c/example_contest/s/3/

Django Version: 3.2.16
Python Version: 3.7.16
Installed Applications:
('oioioi.contestlogo',
'oioioi.participants',
'oioioi.oi',
'oioioi.contestexcl',
'oioioi.testrun',
'oioioi.printing',
'oioioi.scoresreveal',
'oioioi.confirmations',
'oioioi.acm',
'oioioi.forum',
'oioioi.ctimes',
'oioioi.suspendjudge',
'oioioi.timeline',
'oioioi.balloons',
'oioioi.statistics',
'oioioi.publicsolutions',
'oioioi.testspackages',
'oioioi.globalmessage',
'debug_toolbar',
'oioioi.filetracker',
'oioioi.contests',
'oioioi.problems',
'oioioi.programs',
'oioioi.sinolpack',
'oioioi.questions',
'oioioi.rankings',
'oioioi.sioworkers',
'oioioi.analytics',
'oioioi.celery',
'oioioi.status',
'oioioi.su',
'oioioi.clock',
'oioioi.dashboard',
'oioioi.base',
'oioioi.maintenancemode',
'oioioi.evalmgr',
'oioioi.workers',
'oioioi.quizzes',
'oioioi._locale',
'djsupervisor',
'registration',
'django_extensions',
'compressor',
'dj_pagination',
'mptt',
'django.contrib.admin',
'django.contrib.admindocs',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.humanize',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'django.forms',
'django_otp',
'django_otp.plugins.otp_static',
'django_otp.plugins.otp_totp',
'two_factor',
'nested_admin',
'coreapi',
'rest_framework',
'rest_framework.authtoken',
'captcha',
'fontawesomefree')
Installed Middleware:
('debug_toolbar.middleware.DebugToolbarMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'oioioi.base.middleware.TimestampingMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django_otp.middleware.OTPMiddleware',
'oioioi.base.middleware.AnnotateUserBackendMiddleware',
'oioioi.su.middleware.SuAuthenticationMiddleware',
'oioioi.su.middleware.SuFirstTimeRedirectionMiddleware',
'oioioi.base.middleware.UserInfoInErrorMessage',
'django.contrib.messages.middleware.MessageMiddleware',
'dj_pagination.middleware.PaginationMiddleware',
'oioioi.contests.middleware.CurrentContestMiddleware',
'oioioi.base.middleware.HttpResponseNotAllowedMiddleware',
'oioioi.base.middleware.CheckLoginMiddleware',
'oioioi.base.middleware.UserPreferencesMiddleware',
'oioioi.maintenancemode.middleware.MaintenanceModeMiddleware',
'oioioi.contestexcl.middleware.ExclusiveContestsMiddleware')

Traceback (most recent call last):
File "/home/oioioi/.local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/home/oioioi/.local/lib/python3.7/site-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.7/contextlib.py", line 74, in inner
return func(*args, **kwds)
File "/sio2/oioioi/oioioi/base/permissions.py", line 134, in _wrapped_view
return view_func(request, *args, **kwargs)
File "/sio2/oioioi/oioioi/contests/views.py", line 343, in submission_view
header = controller.render_submission(request, submission)
File "/sio2/oioioi/oioioi/testrun/controllers.py", line 282, in render_submission
'input_is_zip': is_zipfile(sbm_testrun.input_file),
File "/usr/local/lib/python3.7/zipfile.py", line 201, in is_zipfile
result = _check_zipfile(fp=filename)
File "/usr/local/lib/python3.7/zipfile.py", line 187, in _check_zipfile
if _EndRecData(fp):
File "/usr/local/lib/python3.7/zipfile.py", line 259, in _EndRecData
fpin.seek(0, 2)
File "/home/oioioi/.local/lib/python3.7/site-packages/django/core/files/utils.py", line 46, in
seek = property(lambda self: self.file.seek)
File "/home/oioioi/.local/lib/python3.7/site-packages/django/core/files/utils.py", line 46, in
seek = property(lambda self: self.file.seek)

Exception Type: AttributeError at /c/example_contest/s/3/
Exception Value: '_FileLikeFromResponse' object has no attribute 'seek'

Docker deployment failing with "oioioi-create-config: command not found"

Tried following the docker deployment installation, unfortunately it doesn't wanna bring the containers up and fails.

Tried running the command on a clean instance of Ubuntu 14.04.

~# docker --version
Docker version 18.06.0-ce, build 0ffa825
~# docker-compose --version
docker-compose version 1.22.0, build f46880fe

See attached outputs of both docker build and docker-compose commands:
docker build output
docker-compose output

Missing Python compiler - fresh install with 'easy_install'

After setting up the docker, creating users, problems etc, the submissions fail. For python, the logs complain the module providing the compiler is missing. For C, depending on selected execution mode, different errors are reported, but neither seems to work.
I'm assuming there is some configuration step that is necessary to make those containers actually work, but it's not mentioned in the documentation, but just in case this helps, here's the log from a (failed) python submission:

Traceback (most recent call last):
  File "/sio2/oioioi/oioioi/evalmgr/tasks.py", line 321, in evalmgr_job
    (env['error']['message'], env['error']['traceback']))
RuntimeError: Error from workers:
Some tasks in a group failed.

Exception: received from [email protected]:43534: exception: <twisted.python.failure.Failure exceptions.RuntimeError: Module providing 'sio.compilers:python' not found>
Remote traceback:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/local/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/_threads/_threadworker.py", line 46, in work
    task()
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/_threads/_team.py", line 190, in doWork
    task()
--- <exception caught here> ---
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/python/threadpool.py", line 250, in inContext
    result = inContext.theWork()
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/python/threadpool.py", line 266, in <lambda>
    inContext.theWork = lambda: context.call(ctx, func, *args, **kw)
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/python/context.py", line 122, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/python/context.py", line 85, in callWithContext
    return func(*args,**kw)
  File "/home/oioioi/.local/lib/python2.7/site-packages/sio/protocol/worker.py", line 14, in _runner_wrap
    renv = runner.run(env)
  File "/home/oioioi/.local/lib/python2.7/site-packages/sio/workers/runner.py", line 76, in run
    environ['job_type'])(environ)
  File "/home/oioioi/.local/lib/python2.7/site-packages/sio/compilers/job.py", line 21, in run
    environ['compiler'].split('.')[0])
  File "/home/oioioi/.local/lib/python2.7/site-packages/sio/workers/util.py", line 24, in first_entry_point
    (group, name or ''))
exceptions.RuntimeError: Module providing 'sio.compilers:python' not found

TB:
Traceback (most recent call last):
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/internet/defer.py", line 1116, in _cbDeferred
    self.callback(self.resultList)
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/internet/defer.py", line 460, in callback
    self._startRunCallbacks(result)
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/internet/defer.py", line 568, in _startRunCallbacks
    self._runCallbacks()
--- <exception caught here> ---
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/home/oioioi/.local/lib/python2.7/site-packages/sio/sioworkersd/taskmanager.py", line 244, in _collect
    raise MultiException("Some tasks in a group failed.", failed)
sio.sioworkersd.taskmanager.MultiException: Some tasks in a group failed.

Exception: received from [email protected]:43534: exception: <twisted.python.failure.Failure exceptions.RuntimeError: Module providing 'sio.compilers:python' not found>
Remote traceback:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/local/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/_threads/_threadworker.py", line 46, in work
    task()
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/_threads/_team.py", line 190, in doWork
    task()
--- <exception caught here> ---
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/python/threadpool.py", line 250, in inContext
    result = inContext.theWork()
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/python/threadpool.py", line 266, in <lambda>
    inContext.theWork = lambda: context.call(ctx, func, *args, **kw)
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/python/context.py", line 122, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/home/oioioi/.local/lib/python2.7/site-packages/twisted/python/context.py", line 85, in callWithContext
    return func(*args,**kw)
  File "/home/oioioi/.local/lib/python2.7/site-packages/sio/protocol/worker.py", line 14, in _runner_wrap
    renv = runner.run(env)
  File "/home/oioioi/.local/lib/python2.7/site-packages/sio/workers/runner.py", line 76, in run
    environ['job_type'])(environ)
  File "/home/oioioi/.local/lib/python2.7/site-packages/sio/compilers/job.py", line 21, in run
    environ['compiler'].split('.')[0])
  File "/home/oioioi/.local/lib/python2.7/site-packages/sio/workers/util.py", line 24, in first_entry_point
    (group, name or ''))
exceptions.RuntimeError: Module providing 'sio.compilers:python' not found

Problems with sio2jail executor

When using sio2jail as safe execution mode all program outputs for any submissions are empty (and result shown in system is WA). This issue is not occurring when using cpu as safe execution mode
Running system in Docker

Support python code submission

I will be great to add python to the list of programming language along with c, c++ and python. As must i'd like to add a few other programming languages python is the first one.

oioioi is a great tool with lots of potential but unfortunately lack of documentation. I have hacked around a minimal setup which accepts python code for pretty much everything c, c++ or pascal was used, but its crude. I'd like to know if there is any work going on to support python and if not then would like to help with the same.

-Neeraj

incorrect format

hello

I use this system
but when someone submit a code with incorrect format (like helloworld.cbp) the judging system has stop. And need to be restart.

Upgrade sandboxes

Would it be possible to bring the versions of sandboxes up to the newest versions? Especially vcpu_exec, as the currently used version of Pin refuses to launch on newer versions of Linux.

Error in the docker installation

Hello,
during the OIOIOI installation using the docker, in the command:

docker build -t oioioi .

during step 32 I received an error:

Step 32/32 : RUN ./manage.py download_sandboxes -q -y -c /sio2/sandboxes
---> Running in 229620a57ae6
Traceback (most recent call last):
File "./manage.py", line 14, in
execute_from_command_line(sys.argv)
File "/home/oioioi/.local/lib/python2.7/site-packages/django/core/management/init.py", line 353, in execute_from_command_line
utility.execute()
File "/home/oioioi/.local/lib/python2.7/site-packages/django/core/management/init.py", line 327, in execute
django.setup()
File "/home/oioioi/.local/lib/python2.7/site-packages/django/init.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/oioioi/.local/lib/python2.7/site-packages/django/apps/registry.py", line 89, in populate
"duplicates: %s" % app_config.label)
django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: workers
The command '/bin/sh -c ./manage.py download_sandboxes -q -y -c /sio2/sandboxes' returned a non-zero code: 1

What to do?
Regards.
Sorry for my English.

Weird display of certain instances of admin.TabularInline

As can be seen below, in some instances of admin.TabularInline the rows with objects appear as one row.
The screenshot is from the form for changing a user (for me at /c/c1/admin/auth/user/1/change/), but I encountered the same problem with a custom instance of admin.TabularInline too.
Unsetting display: content and display: flex in some css seems to fix the issue.

I was using default settings and the normal docker-compose.yml. The site was viewed with Firefox.

Screenshot:
image

Not a simple installation, vagrant up

Hello,
I wanted to install SIO2 through simple installation. I installed vagrant and fired: vagrant up. Effect:
LINK
As you can see it does not work. What to do?
Regards.
Sorry for my English.

Per-contest compiler flags

One can override the compiler contest-wide. However, to override compiler flags contest-wide, one must change them in all problem packages, which is annoying and makes it harder to share tasks between contests. It would be nice if it were possible to change compiler flags in the contest panel (possibly adding another field to compiler overrides).

Bonus if these could also be changed on a per-problem basis.

Remove FPC from developer installation

Currently Docker image for developers contains FPC compiler, unfortunately there is no valid debian package (for arm64):

The main reason for FPC in dev. installation is due to some task packages with Pascal only solutions.

Actions:

  • get rid of fp-compiler fp-units-base fp-units-math from Dockerfile
  • migrate task packages form Pascal to C/C++

No left sidebar menu after login as Teacher

After login as Teacher, there is no left sidebar menu on the page. Instead you have to click on any of the available page links (Students | Teachers | Ranking | Settings etc.) and from there the sidebar menu is available. It would be nice to have it accessible straight away after login.

Require a password for 2FA, missing translation

A password isn't needed for setting up two-factor authorization, which can be used to easily lock an account. That occured several times on the sio2 instance I manage.
Additionaly, it would be nice if the user was asked for the password before viewing or regenerating the API token.

I also noticed a missing translation at /account/two_factor/setup/complete/:
image

Failed to execute command: less

I have met this problem

FilterError at /

�[31mNameError: #grid > .core > .span is undefined�[39m�[31m in �[39m/home/zimpha/sio2/deployment/static/bootstrap/less/navbar.less�[90m on line 199, column 3:�[39m
�[90m198 .navbar-fixed-bottom .container {�[39m
199 �[7m�[31m�[1m#�[22mgrid > .core > .span(@gridColumns);�[39m�[27m
�[90m200 }�[39m�[0m�[0m

Traceback (most recent call last):
File "/home/zimpha/sio2/venv/bin/django-staticfiles-lessc", line 9, in
load_entry_point('oioioi==0.1.1.dev', 'console_scripts', 'django-staticfiles-lessc')()
File "/home/zimpha/sio2/oioioi/oioioi/base/lessc.py", line 54, in main
execute(['lessc'] + sys.argv[1:], capture_output=False)
File "/home/zimpha/sio2/oioioi/oioioi/base/utils/execute.py", line 83, in execute
(command, stdout))
oioioi.base.utils.execute.ExecuteError: Failed to execute command: lessc /home/zimpha/sio2/deployment/static/less/style.less /tmp/tmpXOXPP4.css

How to solve it?

Problem with adding problems and accesing problemset

When I try to add new problem to problemset or any contest I encounter an error:

NoReverseMatch at /c/test/problems/add
Reverse for 'global_portal' with arguments '()' and keyword arguments '{'link_name': 'default', 'portal_path': 'problemset'}' not found. 0 pattern(s) tried: []

Same for trying to access problemset. I use manual installation since I cannot use docker or vagrant image.

Two technical questions about OIOIOI

I've got two questions about problems in the OIOIOI system:

  1. What should be the format of package I'm trying to upload with the "New problem" form inside the contest editing mode? What should it (this package) contain and how should be the files inside it organised/named?

  2. I'm not sure about that: I have configured the OIOIOI using the simple way. Are solutions for problems checked automatically or I have to install sioworkers and run them separately in order to do this?

Per-contest (or per-problem) compiler container

It would be nice if we could upload a compiler container for a contest, for example, if the contest wants to use a new language or new language version. This could additionally allow making contests with weirder judging principles (this is not theoretical, I have actually hosted a contest with unusual judging, and it required a lot of tweaking). Potentially, this would lead to more transparency in the actual compiler containers used by contests like OI.

Space not allowed in last name field

Hello,
My first name is Michel and my last name is Le Bihan. When I submit the name form, I get the error This value may contain only letters, numbers and punctuation marks..
I saw:

""" All characters constituting users name and surname must
belong to one of the categories specified in
`UNICODE_CATEGORY_LIST`. For a guide of unicode categories
see: https://unicodebook.readthedocs.io/unicode.html
"""
UNICODE_CATEGORY_LIST = ['Ll', 'Lm', 'Lo', 'Lt', 'Lu', 'Nd',
'Pf', 'Pd', 'Pi', 'Pe', 'Pc', 'Sc']

It seems really strange to me that some punctuation marks are allowed, but spaces aren't.

Button to copy submission's code to clipboard is not translated after being clicked.

Button to copy submission's source code is not translated after being clicked.

How to reproduce:

  1. Set system language to polish.
  2. Go to any submission.
  3. Click 'Pokaż kod'.
  4. On new page click 'Skopiuj do schowka'.
  5. The button's text is now in English ('Copied').

The problem is present on fresh oioioi instance and on szkopul too.

The text should be translated to give a more polished user experience.

image
image

Docker for production fails to build

When Docker tries to download https://downloads.sio2project.mimuw.edu.pl/sandboxes/sio2jail_exec-sandbox-1.3.0.tar.gz server responds with 403 FORBIDDEN

Step 21/22 : RUN ./manage.py supervisor > /dev/null --daemonize &&     ./manage.py download_sandboxes -q -y -c /sio2/sandboxes &&     ./manage.py supervisor stop all
 ---> Running in f4b87cfe431c
--- Downloading Manifest ...

--- Looking for license ...

--- Preparing ...

--- Downloading sandboxes ...

2020-03-18 11:52:04 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/compiler-fpc.2_4_2.tar.gz [9888106/9888106] -> "compiler-fpc.2_4_2.tar.gz" [1]
2020-03-18 11:52:06 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/compiler-fpc.2_4_4.tar.gz [8765962/8765962] -> "compiler-fpc.2_4_4.tar.gz" [1]
2020-03-18 11:52:09 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/compiler-fpc.2_6_2.tar.gz [14271786/14271786] -> "compiler-fpc.2_6_2.tar.gz" [1]
2020-03-18 11:52:13 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/compiler-gcc.4_6_3.tar.gz [28823240/28823240] -> "compiler-gcc.4_6_3.tar.gz" [1]
2020-03-18 11:52:19 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/compiler-gcc.4_8_2.tar.gz [35360033/35360033] -> "compiler-gcc.4_8_2.tar.gz" [1]
2020-03-18 11:52:29 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/compiler-gcc.6_3_0.tar.gz [58392873/58392873] -> "compiler-gcc.6_3_0.tar.gz" [1]
2020-03-18 11:52:41 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/compiler-gcc.8_3_0-amd64.tar.gz [71363422/71363422] -> "compiler-gcc.8_3_0-amd64.tar.gz" [1]
2020-03-18 11:52:53 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/compiler-gcc.8_3_0-i386.tar.gz [70202073/70202073] -> "compiler-gcc.8_3_0-i386.tar.gz" [1]
2020-03-18 11:53:25 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/compiler-java.1_8.tar.gz [174984266/174984266] -> "compiler-java.1_8.tar.gz" [1]
2020-03-18 11:53:25 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/exec-sandbox.tar.gz [552573/552573] -> "exec-sandbox.tar.gz" [1]
2020-03-18 11:53:32 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/vcpu_exec-sandbox.tar.gz [35880132/35880132] -> "vcpu_exec-sandbox.tar.gz" [1]
2020-03-18 11:53:32 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/proot-sandbox.tar.gz [2004185/2004185] -> "proot-sandbox.tar.gz" [1]
2020-03-18 11:53:32 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/null-sandbox.tar.gz [10240/10240] -> "null-sandbox.tar.gz" [1]
2020-03-18 11:53:33 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/sio2jail_exec-sandbox.tar.gz [1293214/1293214] -> "sio2jail_exec-sandbox.tar.gz" [1]
2020-03-18 11:53:34 URL:https://downloads.sio2project.mimuw.edu.pl/sandboxes/sio2jail_exec-sandbox-1.1.0.tar.gz [6803001/6803001] -> "sio2jail_exec-sandbox-1.1.0.tar.gz" [1]
https://downloads.sio2project.mimuw.edu.pl/sandboxes/sio2jail_exec-sandbox-1.3.0.tar.gz:
2020-03-18 11:53:34 ERROR 403: Forbidden.
FINISHED --2020-03-18 11:53:34--
Total wall clock time: 1m 34s
Downloaded: 15 files, 495M in 1m 30s (5.48 MB/s)
Traceback (most recent call last):
  File "./manage.py", line 14, in <module>
    execute_from_command_line(sys.argv)
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/core/management/base.py", line 294, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/core/management/base.py", line 345, in execute
    output = self.handle(*args, **options)
  File "/sio2/oioioi/oioioi/sioworkers/management/commands/download_sandboxes.py", line 125, in handle
    cwd=download_dir)
  File "/sio2/oioioi/oioioi/base/utils/execute.py", line 83, in execute
    (command, stdout))
oioioi.base.utils.execute.ExecuteError: Failed to execute command: wget -N -i - -nv
None

Is there any problem with this package or just server issue?

Cannot build OIOIOI container

Hi,

After executing docker build . it proceeds up to sandboxes saving phase. Then, I've got the following error:

--- Saving sandboxes to the Filetracker ...



compiler-fpc.2_4_2.tar.gz

Traceback (most recent call last):
  File "./manage.py", line 14, in <module>
    execute_from_command_line(sys.argv)
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/oioioi/.local/lib/python2.7/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/sio2/oioioi/oioioi/sioworkers/management/commands/download_sandboxes.py", line 171, in handle
    filetracker.put_file('/sandboxes/' + basename, local_file)
  File "/home/oioioi/.local/lib/python2.7/site-packages/filetracker/client/client.py", line 287, in put_file
    name, filename, compress_hint=compress_hint)
  File "/home/oioioi/.local/lib/python2.7/site-packages/filetracker/client/remote_data_store.py", line 79, in wrapped
    ret = fn(*args, **kwargs)
  File "/home/oioioi/.local/lib/python2.7/site-packages/filetracker/client/remote_data_store.py", line 63, in wrapped
    raise FiletrackerError('Error making HTTP request: %s' % e)
filetracker.client.FiletrackerError: Error making HTTP request: HTTPConnectionPool(host='web', port=9999): Max retries exceeded with url: /version/ (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd6ee59fa90>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',))
Exception AttributeError: "'NoneType' object has no attribute 'close'" in <bound method FcntlLockManager.__del__ of <filetracker.client.lock_manager.FcntlLockManager object at 0x7fd6ee646b50>> ignored
The command '/bin/sh -c ./manage.py supervisor > /dev/null --daemonize --nolaunch=uwsgi &&     ./manage.py download_sandboxes -q -y -c /sio2/sandboxes &&     ./manage.py supervisor stop all' returned a non-zero code: 1

Any help would be appreciated.

sioworkersd fails to evaluate anything

Upon receiving a job siowokersd spits out the following:

web_1     | [2021-04-26 21:07:13,513: INFO/MainProcess] Received task: oioioi.evalmgr.tasks.evalmgr_job[22b58e2f-aa88-4313-a795-a8cf1c78386a]
web_1     | 
web_1     | 2021-04-26 21:07:13,595 DEBG 'evalmgr' stderr output:
web_1     | [2021-04-26 21:07:13,592: WARNING/Worker-1] ('127.0.0.1', 9002)
web_1     | 
web_1     | 2021-04-26 21:07:13,598 DEBG 'receive_from_workers' stdout output:
web_1     | ----------------------------------------
web_1     | Exception happened during processing of request from ('127.0.0.1', 
web_1     | 2021-04-26 21:07:13,600 DEBG 'receive_from_workers' stderr output:
web_1     | Traceback (most recent call last):
web_1     |   File "/usr/local/lib/python2.7/SocketServer.py", line 293, in _handle_request_noblock
web_1     |     self.process_request(request, client_address)
web_1     |   File "/usr/local/lib/python2.7/SocketServer.py", line 321, in process_request
web_1     |     self.finish_request(request, client_address)
web_1     |   File "/usr/local/lib/python2.7/SocketServer.py", line 334, in finish_request
web_1     |     self.RequestHandlerClass(request, client_address, self)
web_1     |   File "/usr/local/lib/python2.7/SocketServer.py", line 655, in __init__
web_1     |     self.handle()
web_1     |   File "/usr/local/lib/python2.7/BaseHTTPServer.py", line 340, in handle
web_1     |     self.handle_one_request()
web_1     |   File "/usr/local/lib/python2.7/BaseHTTPServer.py", line 328, in handle_one_request
web_1     |     method()
web_1     |   File "/sio2/oioioi/oioioi/workers/management/commands/start_receive_from_workers.py", line 28, in do_POST
web_1     |     if "data" not in form:
web_1     |   File "/usr/local/lib/python2.7/cgi.py", line 600, in __contains__
web_1     |     raise TypeError, "not indexable"
web_1     | TypeError: not indexable
web_1     | 
web_1     | 2021-04-26 21:07:13,611 DEBG 'receive_from_workers' stdout output:
web_1     | 46328)
web_1     | ----------------------------------------
web_1     | 
web_1     | 2021-04-26 21:07:13,613 DEBG 'receive_from_workers' stderr output:
web_1     | Traceback (most recent call last):
web_1     |   File "/usr/local/lib/python2.7/SocketServer.py", line 293, in _handle_request_noblock
web_1     |     self.process_request(request, client_address)
web_1     |   File "/usr/local/lib/python2.7/SocketServer.py", line 321, in process_request
web_1     |     self.finish_request(request, client_address)
web_1     |   File "/usr/local/lib/python2.7/SocketServer.py", line 334, in finish_request
web_1     |     self.RequestHandlerClass(request, client_address, self)
web_1     |   File "/usr/local/lib/python2.7/SocketServer.py", line 655, in __init__
web_1     |     self.handle()
web_1     |   File "/usr/local/lib/python2.7/BaseHTTPServer.py", line 340, in handle
web_1     |     self.handle_one_request()
web_1     |   File "/usr/local/lib/python2.7/BaseHTTPServer.py", line 328, in handle_one_request
web_1     |     method()
web_1     |   File "/sio2/oioioi/oioioi/workers/management/commands/start_receive_from_workers.py", line 28, in do_POST
web_1     |     if "data" not in form:
web_1     |   File "/usr/local/lib/python2.7/cgi.py", line 600, in __contains__
web_1     |     raise TypeError, "not indexable"
web_1     | TypeError: not indexable
web_1     | 
web_1     | 2021-04-26 21:07:13,617 DEBG 'evalmgr' stderr output:
web_1     | [2021-04-26 21:07:13,600: WARNING/Worker-1] ('127.0.0.1', 9002)
web_1     | 
web_1     | 2021-04-26 21:07:13,619 DEBG 'receive_from_workers' stdout output:
web_1     | ----------------------------------------
web_1     | Exception happened during processing of request from ('127.0.0.1', 46330)
web_1     | ----------------------------------------
web_1     | 
web_1     | 2021-04-26 21:07:13,637 DEBG 'evalmgr' stderr output:
web_1     | [2021-04-26 21:07:13,637: DEBUG/Worker-1] Handling exception '' in job:
web_1     | {   'compilation_result_size_limit': 10485760,
web_1     |     'compiler': u'g++4_8_2_cpp11',
web_1     |     'contest_id': u'theta-i',
web_1     |     'contest_priority': 10,
web_1     |     'contest_weight': 1000,
web_1     |     'eval_dir': u'/eval/theta-i/237',
web_1     |     'exec_mode': u'sio2jail',
web_1     |     'extra_args': {   },
web_1     |     'extra_files': {   },
web_1     |     'group_scorer': 'oioioi.acm.utils.acm_group_scorer',
web_1     |     'is_rejudge': True,
web_1     |     'job_id': 'urn:uuid:41744437-7a54-4e99-bd47-12e9bd425833',
web_1     |     'language': u'cpp',
web_1     |     'oioioi_instance': 'Athena',
web_1     |     'problem_id': 4,
web_1     |     'problem_instance_id': 5,
web_1     |     'problem_short_name': u'squ',
web_1     |     'report_kinds': ['FULL'],
web_1     |     'restore_environ_func': 'oioioi.sioworkers.handlers.restore_job',
web_1     |     'return_url': 'http://127.0.0.1:9002',
web_1     |     'round_id': 1,
web_1     |     'score_aggregator': 'oioioi.acm.utils.acm_score_aggregator',
web_1     |     'source_file': u'/submissions/theta-i/237.cpp@1619470482',
web_1     |     'submission_id': 237,
web_1     |     'submission_kind': u'NORMAL',
web_1     |     'submission_owner': u'mily',
web_1     |     'test_scorer': 'oioioi.acm.utils.acm_test_scorer',
web_1     |     'untrusted_checker': True,
web_1     |     'workers_jobs': {   'compile': {   'compilation_result_size_limit': 10485760,
web_1     |                                        'compiler': u'g++4_8_2_cpp11',
web_1     |                                        'contest_id': u'theta-i',
web_1     |                                        'contest_priority': 10,
web_1     |                                        'contest_weight': 1000,
web_1     |                                        'error_handlers': [   (   'remove_queuedjob_on_error',
web_1     |                                                                  'oioioi.evalmgr.handlers.remove_queuedjob_on_error'),
web_1     |                                                              (   'delete_executable',
web_1     |                                                                  'oioioi.programs.handlers.delete_executable'),
web_1     |                                                              (   'create_error_report',
web_1     |                                                                  'oioioi.contests.handlers.create_error_report'),
web_1     |                                                              (   'mail_admins_on_error',
web_1     |                                                                  'oioioi.contests.handlers.mail_admins_on_error'),
web_1     |                                                              (   'update_report_statuses',
web_1     |                                                                  'oioioi.contests.handlers.update_report_statuses'),
web_1     |                                                              (   'update_submission_score',
web_1     |                                                                  'oioioi.contests.handlers.update_submission_score'),
web_1     |                                                              (   'update_user_results',
web_1     |                                                                  'oioioi.contests.handlers.update_user_results'),
web_1     |                                                              (   'call_submission_judged',
web_1     |                                                                  'oioioi.contests.handlers.call_submission_judged'),
web_1     |                                                              (   'dump_final_env',
web_1     |                                                                  'oioioi.evalmgr.handlers.dump_env',
web_1     |                                                                  {   'message': 'Finished evaluation'}),
web_1     |                                                              (   'error_handled',
web_1     |                                                                  'oioioi.evalmgr.handlers.error_handled')],
web_1     |                                        'exec_mode': u'sio2jail',
web_1     |                                        'extra_args': {   },
web_1     |                                        'extra_files': {   },
web_1     |                                        'filetracker_url': 'http://web:9999',
web_1     |                                        'group_scorer': 'oioioi.acm.utils.acm_group_scorer',
web_1     |                                        'is_rejudge': True,
web_1     |                                        'job_id': 'urn:uuid:41744437-7a54-4e99-bd47-12e9bd425833',
web_1     |                                        'job_type': 'compile',
web_1     |                                        'language': u'cpp',
web_1     |                                        'oioioi_instance': 'Athena',
web_1     |                                        'out_file': u'/eval/theta-i/237/urn:uuid:41744437-7a54-4e99-bd47-12e9bd425833-exe',
web_1     |                                        'problem_id': 4,
web_1     |                                        'problem_instance_id': 5,
web_1     |                                        'problem_short_name': u'squ',
web_1     |                                        'recipe': [   (   'compile_end',
web_1     |                                                          'oioioi.programs.handlers.compile_end'),
web_1     |                                                      (   'after_compile',
web_1     |                                                          'oioioi.evalmgr.tasks._placeholder'),
web_1     |                                                      (   'collect_tests',
web_1     |                                                          'oioioi.programs.handlers.collect_tests'),
web_1     |                                                      (   'check_problem_instance_state',
web_1     |                                                          'oioioi.suspendjudge.handlers.check_problem_instance_state'),
web_1     |                                                      (   'before_final_tests',
web_1     |                                                          'oioioi.evalmgr.tasks._placeholder'),
web_1     |                                                      (   'full_run_tests',
web_1     |                                                          'oioioi.programs.handlers.run_tests'),
web_1     |                                                      (   'full_run_tests',
web_1     |                                                          'oioioi.programs.handlers.run_tests_end'),
web_1     |                                                      (   'full_grade_tests',
web_1     |                                                          'oioioi.programs.handlers.grade_tests'),
web_1     |                                                      (   'full_grade_groups',
web_1     |                                                          'oioioi.programs.handlers.grade_groups'),
web_1     |                                                      (   'full_grade_submission',
web_1     |                                                          'oioioi.programs.handlers.grade_submission',
web_1     |                                                          {   'kind': None}),
web_1     |                                                      (   'full_make_report',
web_1     |                                                          'oioioi.programs.handlers.make_report',
web_1     |                                                          {   'kind': 'FULL'}),
web_1     |                                                      (   'after_full_tests',
web_1     |                                                          'oioioi.evalmgr.tasks._placeholder'),
web_1     |                                                      (   'delete_executable',
web_1     |                                                          'oioioi.programs.handlers.delete_executable'),
web_1     |                                                      (   'update_report_statuses',
web_1     |                                                          'oioioi.contests.handlers.update_report_statuses'),
web_1     |                                                      (   'update_submission_score',
web_1     |                                                          'oioioi.contests.handlers.update_submission_score'),
web_1     |                                                      (   'update_user_results',
web_1     |                                                          'oioioi.contests.handlers.update_user_results'),
web_1     |                                                      (   'call_submission_judged',
web_1     |                                                          'oioioi.contests.handlers.call_submission_judged'),
web_1     |                                                      (   'dump_final_env',
web_1     |                                                          'oioioi.evalmgr.handlers.dump_env',
web_1     |                                                          {   'message': 'Finished evaluation'})],
web_1     |                                        'report_kinds': ['FULL'],
web_1     |                                        'round_id': 1,
web_1     |                                        'score_aggregator': 'oioioi.acm.utils.acm_score_aggregator',
web_1     |                                        'source_file': u'/submissions/theta-i/237.cpp@1619470482',
web_1     |                                        'submission_id': 237,
web_1     |                                        'submission_kind': u'NORMAL',
web_1     |                                        'submission_owner': u'mily',
web_1     |                                        'task_priority': 200,
web_1     |                                        'test_scorer': 'oioioi.acm.utils.acm_test_scorer',
web_1     |                                        'untrusted_checker': True}}}
web_1     | 
web_1     | 2021-04-26 21:07:13,675 DEBG 'evalmgr' stderr output:
web_1     | [2021-04-26 21:07:13,672 ERROR 73:140086464529920] Exception occured in job:
web_1     | {   'compilation_result_size_limit': 10485760,
web_1     |     'compiler': u'g++4_8_2_cpp11',
web_1     |     'contest_id': u'theta-i',
web_1     |     'contest_priority': 10,
web_1     |     'contest_weight': 1000,
web_1     |     'eval_dir': u'/eval/theta-i/237',
web_1     |     'exec_mode': u'sio2jail',
web_1     |     'extra_args': {   },
web_1     |     'extra_files': {   },
web_1     |     'group_scorer': 'oioioi.acm.utils.acm_group_scorer',
web_1     |     'is_rejudge': True,
web_1     |     'job_id': 'urn:uuid:41744437-7a54-4e99-bd47-12e9bd425833',
web_1     |     'language': u'cpp',
web_1     |     'oioioi_instance': 'Athena',
web_1     |     'problem_id': 4,
web_1     |     'problem_instance_id': 5,
web_1     |     'problem_short_name': u'squ',
web_1     |     'report_kinds': ['FULL'],
web_1     |     'restore_environ_func': 'oioioi.sioworkers.handlers.restore_job',
web_1     |     'return_url': 'http://127.0.0.1:9002',
web_1     |     'round_id': 1,
web_1     |     'score_aggregator': 'oioioi.acm.utils.acm_score_aggregator',
web_1     |     'source_file': u'/submissions/theta-i/237.cpp@1619470482',
web_1     |     'submission_id': 237,
web_1     |     'submission_kind': u'NORMAL',
web_1     |     'submission_owner': u'mily',
web_1     |     'test_scorer': 'oioioi.acm.utils.acm_test_scorer',
web_1     |     'untrusted_checker': True,
web_1     |     'workers_jobs': {   'compile': {   'compilation_result_size_limit': 10485760,
web_1     |                                        'compiler': u'g++4_8_2_cpp11',
web_1     |                                        'contest_id': u'theta-i',
web_1     |                                        'contest_priority': 10,
web_1     |                                        'contest_weight': 1000,
web_1     |                                        'error_handlers': [   (   'remove_queuedjob_on_error',
web_1     |                                                                  'oioioi.evalmgr.handlers.remove_queuedjob_on_error'),
web_1     |                                                              (   'delete_executable',
web_1     |                                                                  'oioioi.programs.handlers.delete_executable'),
web_1     |                                                              (   'create_error_report',
web_1     |                                                                  'oioioi.contests.handlers.create_error_report'),
web_1     |                                                              (   'mail_admins_on_error',
web_1     |                                                                  'oioioi.contests.handlers.mail_admins_on_error'),
web_1     |                                                              (   'update_report_statuses',
web_1     |                                                                  'oioioi.contests.handlers.update_report_statuses'),
web_1     |                                                              (   'update_submission_score',
web_1     |                                                                  'oioioi.contests.handlers.update_submission_score'),
web_1     |                                                              (   'update_user_results',
web_1     |                                                                  'oioioi.contests.handlers.update_user_results'),
web_1     |                                                              (   'call_submission_judged',
web_1     |                                                                  'oioioi.contests.handlers.call_submission_judged'),
web_1     |                                                              (   'dump_final_env',
web_1     |                                                                  'oioioi.evalmgr.handlers.dump_env',
web_1     |                                                                  {   'message': 'Finished evaluation'}),
web_1     |                                                              (   'error_handled',
web_1     |                                                                  'oioioi.evalmgr.handlers.error_handled')],
web_1     |                                        'exec_mode': u'sio2jail',
web_1     |                                        'extra_args': {   },
web_1     |                                        'extra_files': {   },
web_1     |                                        'filetracker_url': 'http://web:9999',
web_1     |                                        'group_scorer': 'oioioi.acm.utils.acm_group_scorer',
web_1     |                                        'is_rejudge': True,
web_1     |                                        'job_id': 'urn:uuid:41744437-7a54-4e99-bd47-12e9bd425833',
web_1     |                                        'job_type': 'compile',
web_1     |                                        'language': u'cpp',
web_1     |                                        'oioioi_instance': 'Athena',
web_1     |                                        'out_file': u'/eval/theta-i/237/urn:uuid:41744437-7a54-4e99-bd47-12e9bd425833-exe',
web_1     |                                        'problem_id': 4,
web_1     |                                        'problem_instance_id': 5,
web_1     |                                        'problem_short_name': u'squ',
web_1     |                                        'recipe': [   (   'compile_end',
web_1     |                                                          'oioioi.programs.handlers.compile_end'),
web_1     |                                                      (   'after_compile',
web_1     |                                                          'oioioi.evalmgr.tasks._placeholder'),
web_1     |                                                      (   'collect_tests',
web_1     |                                                          'oioioi.programs.handlers.collect_tests'),
web_1     |                                                      (   'check_problem_instance_state',
web_1     |                                                          'oioioi.suspendjudge.handlers.check_problem_instance_state'),
web_1     |                                                      (   'before_final_tests',
web_1     |                                                          'oioioi.evalmgr.tasks._placeholder'),
web_1     |                                                      (   'full_run_tests',
web_1     |                                                          'oioioi.programs.handlers.run_tests'),
web_1     |                                                      (   'full_run_tests',
web_1     |                                                          'oioioi.programs.handlers.run_tests_end'),
web_1     |                                                      (   'full_grade_tests',
web_1     |                                                          'oioioi.programs.handlers.grade_tests'),
web_1     |                                                      (   'full_grade_groups',
web_1     |                                                          'oioioi.programs.handlers.grade_groups'),
web_1     |                                                      (   'full_grade_submission',
web_1     |                                                          'oioioi.programs.handlers.grade_submission',
web_1     |                                                          {   'kind': None}),
web_1     |                                                      (   'full_make_report',
web_1     |                                                          'oioioi.programs.handlers.make_report',
web_1     |                                                          {   'kind': 'FULL'}),
web_1     |                                                      (   'after_full_tests',
web_1     |                                                          'oioioi.evalmgr.tasks._placeholder'),
web_1     |                                                      (   'delete_executable',
web_1     |                                                          'oioioi.programs.handlers.delete_executable'),
web_1     |                                                      (   'update_report_statuses',
web_1     |                                                          'oioioi.contests.handlers.update_report_statuses'),
web_1     |                                                      (   'update_submission_score',
web_1     |                                                          'oioioi.contests.handlers.update_submission_score'),
web_1     |                                                      (   'update_user_results',
web_1     |                                                          'oioioi.contests.handlers.update_user_results'),
web_1     |                                                      (   'call_submission_judged',
web_1     |                                                          'oioioi.contests.handlers.call_submission_judged'),
web_1     |                                                      (   'dump_final_env',
web_1     |                                                          'oioioi.evalmgr.handlers.dump_env',
web_1     |                                                          {   'message': 'Finished evaluation'})],
web_1     |                                        'report_kinds': ['FULL'],
web_1     |                                        'round_id': 1,
web_1     |                                        'score_aggregator': 'oioioi.acm.utils.acm_score_aggregator',
web_1     |                                        'source_file': u'/submissions/theta-i/237.cpp@1619470482',
web_1     |                                        'submission_id': 237,
web_1     |                                        'submission_kind': u'NORMAL',
web_1     |                                        'submission_owner': u'mily',
web_1     |                                        'task_priority': 200,
web_1     |                                        'test_scorer': 'oioioi.acm.utils.acm_test_scorer',
web_1     |                                        'untrusted_checker': True}}}
web_1     | Traceback (most recent call last):
web_1     |   File "/sio2/oioioi/oioioi/evalmgr/tasks.py", line 332, in evalmgr_job
web_1     |     env = _transfer_job(env, **env.pop('transfer'))
web_1     |   File "/sio2/oioioi/oioioi/evalmgr/tasks.py", line 198, in _transfer_job
web_1     |     import_string(transfer_func)(environ, **transfer_kwargs)
web_1     |   File "/sio2/oioioi/oioioi/sioworkers/handlers.py", line 24, in transfer_job
web_1     |     send_async_jobs(environ)
web_1     |   File "/sio2/oioioi/oioioi/sioworkers/jobs.py", line 29, in send_async_jobs
web_1     |     return _get_backend().send_async_jobs(dict_of_jobs, **kwargs)
web_1     |   File "/sio2/oioioi/oioioi/sioworkers/backends.py", line 87, in send_async_jobs
web_1     |     SioworkersdBackend.server.run_group(json.dumps(env))
web_1     |   File "/usr/local/lib/python2.7/xmlrpclib.py", line 1243, in __call__
web_1     |     return self.__send(self.__name, args)
web_1     |   File "/usr/local/lib/python2.7/xmlrpclib.py", line 1602, in __request
web_1     |     verbose=self.__verbose
web_1     |   File "/usr/local/lib/python2.7/xmlrpclib.py", line 1283, in request
web_1     |     return self.single_request(host, handler, request_body, verbose)
web_1     |   File "/usr/local/lib/python2.7/xmlrpclib.py", line 1313, in single_request
web_1     |     response = h.getresponse(buffering=True)
web_1     |   File "/home/oioioi/.local/lib/python2.7/site-packages/raven/breadcrumbs.py", line 390, in getresponse
web_1     |     rv = real_getresponse(self, *args, **kwargs)
web_1     |   File "/usr/local/lib/python2.7/httplib.py", line 1161, in getresponse
web_1     |     response.begin()
web_1     |   File "/usr/local/lib/python2.7/httplib.py", line 448, in begin
web_1     |     version, status, reason = self._read_status()
web_1     |   File "/usr/local/lib/python2.7/httplib.py", line 412, in _read_status
web_1     |     raise BadStatusLine("No status line received - the server has closed the connection")
web_1     | BadStatusLine: No status line received - the server has closed the connection

Django issue

New django-formtools version came out few days ago which requires 1.11 Django, but installing Django 1.11 causes "oioioi 0.1.1.dev0 has requirement Django <1.11,>=1.10 but you'll have Django 1.11 which is incompatible" error

pending

I see this error at one submission and after that all of submission will be pending:

Traceback (most recent call last):
File "/home/siouser/sio2/venv/src/oioioi/oioioi/evalmgr/init.py", line 128, in evalmgr_job
env = _run_phase(env, phase)
File "/home/siouser/sio2/venv/src/oioioi/oioioi/evalmgr/init.py", line 58, in _run_phase
env = handler_func(env, *_kwargs)
File "/home/siouser/sio2/venv/src/oioioi/oioioi/programs/handlers.py", line 59, in decorated
return fn(env, *_kwargs)
File "/home/siouser/sio2/venv/src/oioioi/oioioi/programs/handlers.py", line 190, in run_tests
jobs = run_sioworkers_jobs(jobs)
File "/home/siouser/sio2/venv/src/oioioi/oioioi/sioworkers/jobs.py", line 11, in run_sioworkers_jobs
return _get_backend().run_jobs(dict_of_jobs)
File "/home/siouser/sio2/venv/src/oioioi/oioioi/sioworkers/backends.py", line 43, in run_jobs
results[key] = async_job.get()
File "/home/siouser/sio2/venv/local/lib/python2.7/site-packages/celery/result.py", line 120, in get
interval=interval)
File "/home/siouser/sio2/venv/local/lib/python2.7/site-packages/celery/backends/amqp.py", line 138, in wait_for
raise self.exception_to_python(meta['result'])
OSError: [Errno 24] Too many open files

supervisor error

While setting up a new install, i get this error

(venv) administrator@testserver2:~/oioioi/sio2/deployment$ ./manage.py supervisor
/home/administrator/oioioi/sio2/oioioi/oioioi/base/captcha_check.py:42: CaptchaAudioWarning: Audio playback of captcha is turned off, because no flite executable was found in PATH, and CAPTCHA_FLITE_PATH was not set to any path
warnings.warn(
System check identified some issues:

WARNINGS:
?: (urls.W005) URL namespace 'contest:oioioiadmin' isn't unique. You may not be able to reverse all URLs in this namespace
Traceback (most recent call last):
File "./manage.py", line 14, in
execute_from_command_line(sys.argv)
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/django/core/management/init.py", line 381, > in execute_from_command_line
utility.execute()
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/django/core/management/init.py", line 375, > in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/djsupervisor/management/commands/supervisor.py", line 179, in run_from_argv
return super(Command,self).run_from_argv(argv)
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/django/core/management/base.py", line 323, in > run_from_argv
self.execute(*args, **cmd_options)
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/django/core/management/base.py", line 364, in > execute
output = self.handle(*args, **options)
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/djsupervisor/management/commands/supervisor.py", line 192, in handle
return supervisord.main(("-c",cfg_file))
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/supervisor/supervisord.py", line 352, in main
options.realize(args, doc=doc)
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/supervisor/options.py", line 485, in realize
Options.realize(self, *arg, **kw)
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/supervisor/options.py", line 310, in realize
self.process_config()
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/supervisor/options.py", line 549, in process_config
Options.process_config(self, do_usage=do_usage)
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/supervisor/options.py", line 318, in process_config
self.process_config_file(do_usage)
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/supervisor/options.py", line 348, in process_config_file
self.read_config(self.configfile)
File "/home/administrator/oioioi/sio2/venv/lib/python3.8/site-packages/supervisor/options.py", line 576, in read_config
parser.read_file(fp)
File "/usr/lib/python3.8/configparser.py", line 718, in read_file
self._read(f, source)
File "/usr/lib/python3.8/configparser.py", line 1017, in _read
for lineno, line in enumerate(fp, start=1):
TypeError: 'OnDemandStringIO' object is not iterable
(venv) administrator@testserver2:~/oioioi/sio2/deployment$

Any idea why this doesnt work?

Add more graphs in problems statistics

Karol Pokorski suggested adding more graphs in statistics dashboard. In particular graph comparing execution times of jury's program and min/max/avg of accepted solutions.

Oioioi-create-config results in error

Using 8d776de I can't create config for deployment using oioioi-create-config:

(venv)beton@ubuntu:~/sio2$ oioioi-create-config deployment
Traceback (most recent call last):
  File "/home/beton/sio2/venv/bin/oioioi-create-config", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/home/beton/sio2/venv/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 2711, in <module>
    parse_requirements(__requires__), Environment()
  File "/home/beton/sio2/venv/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 588, in resolve
    raise VersionConflict(dist,req) # XXX put more info here
pkg_resources.VersionConflict: (Django 1.6 (/home/beton/sio2/venv/lib/python2.7/site-packages), Requirement.parse('django>=1.4.2,<1.6'))

Looks as if pip downloaded 1.6 version of Django while <1.6 was needed.

Distro is Ubuntu 12.04.3 with python 2.7 installed.

Round reordering

It would be nice if one could change the order of rounds. For example, when teaching, one could always put the current round at the top and put the remaining ones ascending chronologically.

I suggest that the round configuration blocks in the contest admin page become drag-and-droppable, so the contest owner may reorder them freely.

Raports from checkers may show too much information

When checker writes "read" and "expected" lines (for example, utility compare from OI ocen) user program can leak tests to user (simply be echoing them to standard output). Character limit of compare is around 200, which renders this leakage practical, especially for tasks with small inputs.

Modification of compare to output only "expected" lines or filter "read" to (short) numbers might be best solution (it looks like compare is OI's proprietary utility, as I couldn't find its source code anywhere).
(Of course, I assume that showing input to user is undesirable).

Admin page for Teachers - usability issues

Admin view for managing teachers have several usability issues:

  • missing search option (search by school or search by usename or first/last name)
  • there is no timestamp of request date (so it is not possible to filter recent requests)
  • adding new teacher form is not usable due to too large select field (static HTML element with all users)
  • missing translations "Dodaj teacher" & "900 teachers"

Affected urls:

Stop using CDNs

Hello,
Could you please stop using external CDNs (exactly CloudFlare CDN to deliver mathjax) on SIO2?

Problem with run server in nginx - UWSGI Socket

Hi,
I try to install OIOIOI. I came to Production configuration point 10. I installed nginx-full and uwsgi. I set everything as it should. I've broken my domain and cloudflare. Like I did with virtualhosts. When entering, I see erro 502. In fact, in the nginx logs I found:
2018/03/28 21:13:19 [crit] 25039#25039: *2 connect() to unix:///home/oioioi/sio2/deployment/uwsgi.sock failed (2: No such file or directory) while connecting to upstream, client: ****, server: ****, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:///home/oioioi/sio2/deployment/uwsgi.sock:", host: "****"
Actually the uwsgi.sock file is not in the deployment folder. The entire previous installation went without errors. What to do?
Regards.
Sorry for my english.

Add spam detection API

There has been spam activity on various contests' forums (with open registration). Even though it is unavoidable in such circumstances, it would be nice to allow to employ algorithms that classify posts, and automatically delete/hide messages that are very likely spam.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.