-
Notifications
You must be signed in to change notification settings - Fork 392
Open
Description
Issue template
Description: The server returns 500 error when user has no tokens available on the task.
Steps to reproduce:
- Create a contest with a finite-token task (I followed the instructions to import
con_test
) - Adjust the tokens parameters of the task as follows, so that it is easier to run out of tokens:
Token mode: finite
Maximum number of tokens:
Minimum interval between tokens: 10
Initial number of tokens: 2
Token generation number: 1
Token generation period: 1
Maximum accumulated tokens: 2 - Login as user, submit at least 3 submissions, and try to run out of tokens.
Expected: It should show the submissions page as before, and tell user that no tokens available now.
Actual: A 500 error.
Logs
~/cms/log/ContestWebServer-0/2025-09-07-09-12-21.log
Relevant lines:
2025-09-07 09:16:12,560 - ERROR [Contest,0 9 base::write_error] Uncaught exception (UndefinedError("'tokens_info' is undefined")) while processing a request: Traceback (most recent call last):
File "/home/cmsuser/cms/lib/python3.12/site-packages/tornado/web.py", line 1510, in _execute
result = method(*self.path_args, **self.path_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/tornado/web.py", line 2898, in wrapper
return method(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/cms/server/contest/phase_management.py", line 240, in wrapped
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/cms/server/util.py", line 64, in wrapped_f
f(self, *args)
File "/home/cmsuser/cms/lib/python3.12/site-packages/cms/server/contest/handlers/tasksubmission.py", line 179, in get
self.render("task_submissions.html",
File "/home/cmsuser/cms/lib/python3.12/site-packages/cms/server/contest/handlers/base.py", line 91, in render
for chunk in t.generate(**params):
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/environment.py", line 1045, in generate
yield self.environment.handle_exception(exc_info, True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/_compat.py", line 37, in reraise
raise value.with_traceback(tb)
File "/home/cmsuser/cms/lib/python3.12/site-packages/cms/server/contest/templates/task_submissions.html", line 24, in <module>
{% set can_play_token_now = can_play_token and tokens_info[2] is none %}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/environment.py", line 1039, in generate
for event in self.root_render_func(self.new_context(vars)):
File "/home/cmsuser/cms/lib/python3.12/site-packages/cms/server/contest/templates/task_submissions.html", line 46, in root
return;
File "/home/cmsuser/cms/lib/python3.12/site-packages/cms/server/contest/templates/contest.html", line 14, in root
{% for extension in (lang|to_language).source_extensions %}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/cms/server/contest/templates/base.html", line 27, in root
File "/home/cmsuser/cms/lib/python3.12/site-packages/cms/server/contest/templates/contest.html", line 315, in block_body
File "/home/cmsuser/cms/lib/python3.12/site-packages/cms/server/contest/templates/task_submissions.html", line 315, in block_core
{% endif %}
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/runtime.py", line 262, in call
return __obj(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/runtime.py", line 570, in __call__
return self._invoke(arguments, autoescape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/asyncsupport.py", line 110, in _invoke
return original_invoke(self, arguments, autoescape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/runtime.py", line 574, in _invoke
rv = self._func(*arguments)
^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/cms/server/contest/templates/macro/submission.html", line 215, in macro
{% endif %}
^
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/runtime.py", line 262, in call
return __obj(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/runtime.py", line 570, in __call__
return self._invoke(arguments, autoescape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/asyncsupport.py", line 110, in _invoke
return original_invoke(self, arguments, autoescape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/runtime.py", line 574, in _invoke
rv = self._func(*arguments)
^^^^^^^^^^^^^^^^^^^^^^
File "/home/cmsuser/cms/lib/python3.12/site-packages/cms/server/contest/templates/macro/submission.html", line 499, in macro
File "/home/cmsuser/cms/lib/python3.12/site-packages/jinja2/environment.py", line 411, in getitem
return obj[argument]
~~~^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'tokens_info' is undefined
2025-09-07 09:16:12,560 - ERROR [Contest,0 9 web::log_request] 500 GET /tasks/batch/submissions?submission_id=3ZBQOjcz2LQJ17g05Rl7JbX4xTFFU6cU0mfB0askSK0. (172.18.0.1) 25.79ms
It seems to be related with https://github.com/cms-dev/cms/blob/main/cms/server/contest/templates/macro/submission.html#L239
System Information
CMS version: main
How was CMS installed: docker
Metadata
Metadata
Assignees
Labels
No labels