NDOJ/judge/utils/tickets.py
2022-05-14 12:57:27 -05:00

21 lines
625 B
Python

from django.contrib.contenttypes.models import ContentType
from django.db.models import Q
from judge.models import Problem
from judge.utils.problems import editable_problems
def own_ticket_filter(profile_id):
return Q(assignees__id=profile_id) | Q(user_id=profile_id)
def filter_visible_tickets(queryset, user, profile=None):
if profile is None:
profile = user.profile
return queryset.filter(
own_ticket_filter(profile.id)
| Q(
content_type=ContentType.objects.get_for_model(Problem),
object_id__in=editable_problems(user, profile),
)
).distinct()