Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions oioioi/contests/processors.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

from oioioi.base.utils import request_cached
from oioioi.contests.models import Contest, ContestView
from oioioi.contests.utils import visible_contests


def register_current_contest(request):
Expand Down Expand Up @@ -31,7 +30,10 @@ def recent_contests(request):
else:
c_views = ContestView.objects.filter(user=request.real_user).select_related("contest")
c_views = c_views[: getattr(settings, "NUM_RECENT_CONTESTS", 5)]
return [cv.contest for cv in c_views if cv.contest in visible_contests(request)]
# Skip expensive visible_contests() check - if user visited a contest,
# show it in recent list. Visibility shouldn't change often, and checking
# visibility for every request is not worth it.
return [cv.contest for cv in c_views if cv.contest != request.contest]


def register_recent_contests(request):
Expand Down
12 changes: 5 additions & 7 deletions oioioi/szkopul/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@
from oioioi.base.main_page import register_main_page_view
from oioioi.base.navbar_links import navbar_links_registry
from oioioi.contests.controllers import submission_template_context
from oioioi.contests.models import Contest, Submission
from oioioi.contests.models import Submission
from oioioi.contests.processors import recent_contests
from oioioi.contests.utils import visible_contests_queryset_old
from oioioi.problems.utils import filter_my_all_visible_submissions

# navbar_links_registry.register(
Expand Down Expand Up @@ -35,11 +34,10 @@
@register_main_page_view(order=100)
def main_page_view(request):
to_show = getattr(settings, "NUM_RECENT_CONTESTS", 7)
rcontests = recent_contests(request)
# this is unsalvageable
contests = list(set(Contest.objects.filter(visible_contests_queryset_old(request)).distinct()[:to_show]).difference(rcontests))
contests.sort(key=lambda x: x.creation_date, reverse=True)
contests = (rcontests + contests)[:to_show]
# Skip expensive visible_contests() check - if user visited a contest,
# show it in recent list. Visibility shouldn't change often, and checking
# visibility for every request is not worth it.
contests = recent_contests(request)[:to_show]

submissions = []
show_scores = False
Expand Down
Loading