Clean up more sql queries

This commit is contained in:
cuom1999 2024-04-26 20:37:35 -05:00
parent 571596dcbf
commit bf5514032b
16 changed files with 356 additions and 358 deletions

View file

@ -130,7 +130,6 @@ class TicketFeed(HomeFeedView):
)
.order_by("-id")
.prefetch_related("linked_item")
.select_related("user__user")
)
else:
return []
@ -141,7 +140,6 @@ class TicketFeed(HomeFeedView):
Ticket.objects.order_by("-id")
.filter(is_open=True)
.prefetch_related("linked_item")
.select_related("user__user")
)
return filter_visible_tickets(tickets, self.request.user, profile)
else:
@ -157,7 +155,7 @@ class TicketFeed(HomeFeedView):
class CommentFeed(HomeFeedView):
model = Comment
context_object_name = "comments"
paginate_by = 15
paginate_by = 10
feed_content_template_name = "comments/feed.html"
def get_queryset(self):

View file

@ -438,22 +438,13 @@ class CommentedDetailView(TemplateResponseMixin, SingleObjectMixin, View):
def _get_queryset(self, target_comment):
if target_comment:
queryset = target_comment.get_descendants(include_self=True)
queryset = (
queryset.select_related("author__user")
.filter(hidden=False)
.defer("author__about")
)
queryset = queryset.filter(hidden=False)
else:
queryset = self.object.comments
queryset = queryset.filter(parent=None, hidden=False)
queryset = (
queryset.select_related("author__user")
.defer("author__about")
.filter(hidden=False)
.annotate(
count_replies=Count("replies", distinct=True),
)[:DEFAULT_OFFSET]
)
queryset = queryset.filter(hidden=False).annotate(
count_replies=Count("replies", distinct=True),
)[:DEFAULT_OFFSET]
if self.request.user.is_authenticated:
profile = self.request.profile

View file

@ -469,6 +469,9 @@ class SubmissionsListBase(DiggPaginatorMixin, TitleMixin, ListView):
if context["in_hidden_subtasks_contest"]:
for submission in context["submissions"]:
self.modify_attrs(submission)
context[
"is_in_editable_contest"
] = self.in_contest and self.contest.is_editable_by(self.request.user)
return context
@ -721,6 +724,11 @@ def single_submission(request, submission_id, show_problem=True):
submission_related(Submission.objects.all()), id=int(submission_id)
)
is_in_editable_contest = False
if authenticated and request.in_contest_mode:
contest = request.profile.current_contest.contest
is_in_editable_contest = contest.is_editable_by(request.user)
if not submission.problem.is_accessible_by(request.user):
raise Http404()
@ -733,6 +741,7 @@ def single_submission(request, submission_id, show_problem=True):
"problem_name": show_problem
and submission.problem.translated_name(request.LANGUAGE_CODE),
"profile": request.profile if authenticated else None,
"is_in_editable_contest": is_in_editable_contest,
},
)