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

@ -73,12 +73,7 @@ class Comment(MPTTModel):
@classmethod
def most_recent(cls, user, n, batch=None, organization=None):
queryset = (
cls.objects.filter(hidden=False)
.select_related("author__user")
.defer("author__about")
.order_by("-id")
)
queryset = cls.objects.filter(hidden=False).order_by("-id")
if organization:
queryset = queryset.filter(author__in=organization.members.all())

View file

@ -547,15 +547,6 @@ def on_user_save(sender, instance, **kwargs):
pass
@receiver([pre_save], sender=Profile)
def on_profile_save(sender, instance, **kwargs):
if instance.id is None:
return
prev = sender.objects.get(id=instance.id)
if prev.mute != instance.mute or prev.profile_image != instance.profile_image:
_get_basic_info.dirty(instance.id)
@cache_wrapper(prefix="Pgbi3")
def _get_basic_info(profile_id):
profile = (

View file

@ -11,6 +11,7 @@ from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
from judge.judgeapi import disconnect_judge
from judge.caching import cache_wrapper
__all__ = ["Language", "RuntimeVersion", "Judge"]
@ -147,14 +148,11 @@ class Language(models.Model):
@classmethod
def get_default_language(cls):
try:
return Language.objects.get(key=settings.DEFAULT_USER_LANGUAGE)
except Language.DoesNotExist:
return cls.get_python3()
return _get_default_language()
@classmethod
def get_default_language_pk(cls):
return cls.get_default_language().pk
return _get_default_language().pk
class Meta:
ordering = ["key"]
@ -162,6 +160,14 @@ class Language(models.Model):
verbose_name_plural = _("languages")
@cache_wrapper(prefix="gdl")
def _get_default_language():
try:
return Language.objects.get(key=settings.DEFAULT_USER_LANGUAGE)
except Language.DoesNotExist:
return cls.get_python3()
class RuntimeVersion(models.Model):
language = models.ForeignKey(
Language,

View file

@ -220,7 +220,7 @@ class Submission(models.Model):
def id_secret(self):
return self.get_id_secret(self.id)
def is_accessible_by(self, profile):
def is_accessible_by(self, profile, check_contest=True):
if not profile:
return False
@ -239,9 +239,10 @@ class Submission(models.Model):
if self.problem.is_public and user.has_perm("judge.view_public_submission"):
return True
contest = self.contest_object
if contest and contest.is_editable_by(user):
return True
if check_contest:
contest = self.contest_object
if contest and contest.is_editable_by(user):
return True
from judge.utils.problems import (
user_completed_ids,