Phase 2 评审修复: P0 min_score+&q=500 (ORM→list 顺序) + P1 场景分页(20/page) + P2 文档同步 + 36 tests

This commit is contained in:
ila
2026-07-06 23:04:55 +08:00
parent cff3c64c19
commit 714d218eb2
6 changed files with 218 additions and 6 deletions
+11 -5
View File
@@ -31,12 +31,18 @@ class ScenarioPage(Page):
def get_context(self, request, *args, **kwargs):
context = super().get_context(request, *args, **kwargs)
context["projects"] = (
projects = (
SkeletonProjectPage.objects.live()
.filter(scenarios=self)
.prefetch_related("languages", "scenarios")
.order_by("-first_published_at")
)
paginator = Paginator(projects, 20)
page = request.GET.get("page", "1")
try:
context["projects"] = paginator.page(int(page))
except (ValueError, EmptyPage):
context["projects"] = paginator.page(1)
return context
class Meta:
@@ -148,6 +154,10 @@ class ProjectIndexPage(Page):
projects = projects.filter(frameworks__slug=framework)
if database:
projects = projects.filter(databases__slug=database)
if q:
projects = projects.filter(
Q(title__icontains=q) | Q(summary__icontains=q)
)
try:
score_val = int(min_score)
if 0 <= score_val <= 30:
@@ -156,10 +166,6 @@ class ProjectIndexPage(Page):
]
except (ValueError, TypeError):
pass
if q:
projects = projects.filter(
Q(title__icontains=q) | Q(summary__icontains=q)
)
paginator = Paginator(projects, 20)
page = request.GET.get("page", "1")