Skip to content

Commit e0e57ad

Browse files
committed
fixing some code conflicts with szkopul patches part2
1 parent d4b225b commit e0e57ad

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

oioioi/contests/utils.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,32 @@ def used_controllers():
401401

402402
def visible_contests_query(request):
403403
"""Returns materialized set of contests visible to the logged in user."""
404+
if request.GET.get('living', 'safely') == 'dangerously':
405+
visible_query = Contest.objects.none()
406+
for controller_name in used_controllers():
407+
controller_class = import_string(controller_name)
408+
# HACK: we pass None contest just to call visible_contests_query.
409+
# This is a workaround for mixins not taking classmethods very well.
410+
controller = controller_class(None)
411+
subquery = Contest.objects.filter(controller_name=controller_name).filter(
412+
controller.registration_controller().visible_contests_query(request)
413+
)
414+
visible_query = visible_query.union(subquery, all=False)
415+
return set(visible_query)
416+
visible_query = Q_always_false()
417+
for controller_name in used_controllers():
418+
controller_class = import_string(controller_name)
419+
# HACK: we pass None contest just to call visible_contests_query.
420+
# This is a workaround for mixins not taking classmethods very well.
421+
controller = controller_class(None)
422+
visible_query |= Q(
423+
controller_name=controller_name
424+
) & controller.registration_controller().visible_contests_query(request)
425+
return Contest.objects.filter(visible_query).distinct()
426+
427+
428+
def visible_contests_as_django_queryset(request):
429+
"""Returns query set of contests visible to the logged in user."""
404430
if request.GET.get('living', 'safely') == 'dangerously':
405431
visible_query = Contest.objects.none()
406432
for controller_name in used_controllers():
@@ -424,23 +450,25 @@ def visible_contests_query(request):
424450
) & controller.registration_controller().visible_contests_query(request)
425451
return Contest.objects.filter(visible_query).distinct()
426452

453+
427454
@request_cached
428455
def visible_contests(request):
429-
contests = visible_contests_query(request)
456+
contests = visible_contests_as_django_queryset(request)
430457
return set(contests)
431458

459+
432460
@request_cached_complex
433461
def visible_contests_queryset(request, filter_value=None):
434-
contests = visible_contests_query(request)
462+
contests = visible_contests_as_django_queryset(request)
435463
if filter_value is not None:
436464
contests = contests.filter(Q(name__icontains=filter_value) | Q(id__icontains=filter_value) | Q(school_year=filter_value))
437465
return set(contests)
438466

439467

440468
@request_cached_complex
441-
def visible_contests_as_django_queryset(request, filter_value=None):
469+
def visible_filtered_contests_as_django_queryset(request, filter_value=None):
442470
"""TODO: remove code duplication visible_contests_queryset/visible_contests_query"""
443-
contests = visible_contests_query(request)
471+
contests = visible_contests_as_django_queryset(request)
444472
if filter_value is not None:
445473
contests = contests.filter(Q(name__icontains=filter_value) | Q(id__icontains=filter_value) | Q(school_year=filter_value))
446474
return contests

oioioi/contests/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
is_contest_observer,
5555
visible_contests,
5656
visible_contests_queryset,
57-
visible_contests_as_django_queryset,
57+
visible_filtered_contests_as_django_queryset,
5858
visible_problem_instances,
5959
visible_rounds,
6060
get_files_message,
@@ -856,7 +856,7 @@ def filter_contests_view(request, filter_value=""):
856856
)
857857

858858
def get_contest_hints(request, query):
859-
contests = visible_contests_as_django_queryset(request, query)
859+
contests = visible_filtered_contests_as_django_queryset(request, query)
860860
contests = contests.filter(Q(is_archived=False)).distinct()
861861
return [
862862
{

0 commit comments

Comments
 (0)