Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: TAG 2021/22 Summer Sprint 1
-
Fix Version/s: None
-
Component/s: OIOIOI
-
Labels:None
-
Sprint:TAG 2021/22 Summer Sprint 1
Description
Due to changes in Django 2.2.26 some tests fail.
Cause:
- changes for dictsort usage in templates: https://docs.djangoproject.com/en/4.0/releases/2.2.26/#cve-2021-45116-potential-information-disclosure-in-dictsort-template-filter
How to reproduce:
- pip3 install -U django==2.2.26
- docker-compose -f docker-compose-dev.yml -f extra/docker/docker-compose-dev-noserver.yml exec "web" ../oioioi/test3.sh -v oioioi/problems/tests/test_task_archive.py
affected template:
+++ b/oioioi/problems/templates/problems/task-archive-problemgroup.html
{% for value, subdict in problems.subnodes.items|dictsort:"0.order" %}
affected view:
task_archive_tag_view
code
```
problems.subnodes.items|dictsort:"0.order"
```
sorts tuples (subnodes.items()) by value of order attribute of first element of tuple (key)
Cause:
- changes for dictsort usage in templates: https://docs.djangoproject.com/en/4.0/releases/2.2.26/#cve-2021-45116-potential-information-disclosure-in-dictsort-template-filter
How to reproduce:
- pip3 install -U django==2.2.26
- docker-compose -f docker-compose-dev.yml -f extra/docker/docker-compose-dev-noserver.yml exec "web" ../oioioi/test3.sh -v oioioi/problems/tests/test_task_archive.py
affected template:
+++ b/oioioi/problems/templates/problems/task-archive-problemgroup.html
{% for value, subdict in problems.subnodes.items|dictsort:"0.order" %}
affected view:
task_archive_tag_view
code
```
problems.subnodes.items|dictsort:"0.order"
```
sorts tuples (subnodes.items()) by value of order attribute of first element of tuple (key)
https://gerrit.sio2project.mimuw.edu.pl/3815
SIO-2462Django upgrade to 3.1While repairing the tests for django 2.2.26 in the ticket
SIO-2484, dictsort:"value.order" is used. Apparently,from django 3.1 in order to sort elements, comparator
is based on _eq_ function (there's no default ordering),
so _eq_ func from FakeOriginInfoValue is used while
performing query.
Unfortunately, in some queries it's possible that
FakeOriginInfoValue objects are among OriginInfoValue
objects, but OriginInfoValue class doesn't have the: cat variable.
Change-Id: I856c07af5d30de3f3ed34186c1a097128dc2f42e