Description
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'