style: ruff format 全仓库
行宽 180 下把历史遗留的折行表达式合并,无语义改动。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -24,9 +24,7 @@ class Command(BaseCommand):
|
||||
|
||||
fixed_count = 0
|
||||
for progress in progresses:
|
||||
problemset_problems = ProblemSetProblem.objects.filter(
|
||||
problemset=progress.problemset
|
||||
).select_related("problem")
|
||||
problemset_problems = ProblemSetProblem.objects.filter(problemset=progress.problemset).select_related("problem")
|
||||
|
||||
updated = False
|
||||
for psp in problemset_problems:
|
||||
@@ -46,10 +44,7 @@ class Command(BaseCommand):
|
||||
if not accepted:
|
||||
continue
|
||||
|
||||
self.stdout.write(
|
||||
f" 用户 {progress.user.username} | 题单「{progress.problemset.title}」"
|
||||
f" | 题目 {psp.problem._id} 已AC但进度未记录"
|
||||
)
|
||||
self.stdout.write(f" 用户 {progress.user.username} | 题单「{progress.problemset.title}」 | 题目 {psp.problem._id} 已AC但进度未记录")
|
||||
if dry_run:
|
||||
continue
|
||||
|
||||
|
||||
@@ -16,21 +16,19 @@ def sync_progress_on_problem_change(sender, instance, created, **kwargs):
|
||||
try:
|
||||
with transaction.atomic():
|
||||
# 获取该题单的所有用户进度
|
||||
progresses = ProblemSetProgress.objects.filter(
|
||||
problemset=instance.problemset
|
||||
)
|
||||
|
||||
progresses = ProblemSetProgress.objects.filter(problemset=instance.problemset)
|
||||
|
||||
# 批量更新所有用户的进度
|
||||
for progress in progresses:
|
||||
progress.update_progress()
|
||||
|
||||
|
||||
# 重新计算该题单的所有徽章资格
|
||||
badges = ProblemSetBadge.objects.filter(problemset=instance.problemset)
|
||||
for badge in badges:
|
||||
badge.recalculate_user_badges()
|
||||
|
||||
|
||||
logger.info(f"已同步题单 {instance.problemset.id} 的所有用户进度和徽章资格")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"同步题单进度时出错: {e}")
|
||||
|
||||
@@ -42,27 +40,23 @@ def sync_progress_on_problem_delete(sender, instance, **kwargs):
|
||||
with transaction.atomic():
|
||||
# 清理该题目在题单中的所有提交记录
|
||||
from .models import ProblemSetSubmission
|
||||
ProblemSetSubmission.objects.filter(
|
||||
problemset=instance.problemset,
|
||||
problem=instance.problem
|
||||
).delete()
|
||||
|
||||
|
||||
ProblemSetSubmission.objects.filter(problemset=instance.problemset, problem=instance.problem).delete()
|
||||
|
||||
# 获取该题单的所有用户进度
|
||||
progresses = ProblemSetProgress.objects.filter(
|
||||
problemset=instance.problemset
|
||||
)
|
||||
|
||||
progresses = ProblemSetProgress.objects.filter(problemset=instance.problemset)
|
||||
|
||||
# 批量更新所有用户的进度
|
||||
for progress in progresses:
|
||||
progress.update_progress()
|
||||
|
||||
|
||||
# 重新计算该题单的所有徽章资格
|
||||
badges = ProblemSetBadge.objects.filter(problemset=instance.problemset)
|
||||
for badge in badges:
|
||||
badge.recalculate_user_badges()
|
||||
|
||||
|
||||
logger.info(f"已同步题单 {instance.problemset.id} 的所有用户进度和徽章资格(删除题目后)")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"同步题单进度时出错: {e}")
|
||||
|
||||
@@ -75,7 +69,7 @@ def sync_badges_on_badge_change(sender, instance, created, **kwargs):
|
||||
# 重新计算该奖章的所有用户资格
|
||||
instance.recalculate_user_badges()
|
||||
logger.info(f"已重新计算题单 {instance.problemset.id} 的奖章 {instance.id} 的用户资格")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"重新计算奖章资格时出错: {e}")
|
||||
|
||||
@@ -88,6 +82,6 @@ def cleanup_badges_on_badge_delete(sender, instance, **kwargs):
|
||||
# 删除该奖章的所有用户奖章记录
|
||||
UserBadge.objects.filter(badge=instance).delete()
|
||||
logger.info(f"已清理奖章 {instance.id} 的所有用户奖章记录")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"清理用户奖章记录时出错: {e}")
|
||||
|
||||
@@ -76,8 +76,7 @@ class ProblemSetAPI(AsyncAPIView):
|
||||
|
||||
# 批量查询用户已获得的奖章ID(这些题单相关的)
|
||||
user_earned_badge_ids = {
|
||||
badge_id
|
||||
async for badge_id in UserBadge.objects.filter(user=request.user, badge__problemset_id__in=problem_set_ids).values_list("badge_id", flat=True)
|
||||
badge_id async for badge_id in UserBadge.objects.filter(user=request.user, badge__problemset_id__in=problem_set_ids).values_list("badge_id", flat=True)
|
||||
}
|
||||
|
||||
# 预加载奖章信息(在获取ID之后应用,避免在获取ID时也预加载)
|
||||
@@ -97,12 +96,7 @@ class ProblemSetDetailAPI(AsyncAPIView):
|
||||
async def get(self, request, problem_set_id):
|
||||
"""获取题单详情"""
|
||||
try:
|
||||
problem_set = await (
|
||||
ProblemSet.objects.select_related("created_by")
|
||||
.filter(id=problem_set_id, visible=True)
|
||||
.exclude(status=ProblemSetStatus.DRAFT)
|
||||
.aget()
|
||||
)
|
||||
problem_set = await ProblemSet.objects.select_related("created_by").filter(id=problem_set_id, visible=True).exclude(status=ProblemSetStatus.DRAFT).aget()
|
||||
except ProblemSet.DoesNotExist:
|
||||
return self.error("题单不存在")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user