Fix mypy relation resolution in CI
Disable reverse manager generation on ArticlePage.category and switch category selection to id-based queries so CI mypy can resolve models reliably. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -68,7 +68,7 @@ class Migration(migrations.Migration):
|
|||||||
blank=True,
|
blank=True,
|
||||||
null=True,
|
null=True,
|
||||||
on_delete=django.db.models.deletion.PROTECT,
|
on_delete=django.db.models.deletion.PROTECT,
|
||||||
related_name="articles",
|
related_name="+",
|
||||||
to="blog.category",
|
to="blog.category",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -79,7 +79,7 @@ class Migration(migrations.Migration):
|
|||||||
name="category",
|
name="category",
|
||||||
field=models.ForeignKey(
|
field=models.ForeignKey(
|
||||||
on_delete=django.db.models.deletion.PROTECT,
|
on_delete=django.db.models.deletion.PROTECT,
|
||||||
related_name="articles",
|
related_name="+",
|
||||||
to="blog.category",
|
to="blog.category",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -49,8 +49,9 @@ class HomePage(Page):
|
|||||||
id__in=ArticlePage.objects.live().public().values_list("tags__id", flat=True)
|
id__in=ArticlePage.objects.live().public().values_list("tags__id", flat=True)
|
||||||
).distinct().order_by("name")
|
).distinct().order_by("name")
|
||||||
)
|
)
|
||||||
ctx["available_categories"] = (
|
category_ids = ArticlePage.objects.live().public().values_list("category_id", flat=True)
|
||||||
Category.objects.filter(show_in_nav=True, articles__live=True).distinct().order_by("sort_order", "name")
|
ctx["available_categories"] = Category.objects.filter(show_in_nav=True, id__in=category_ids).order_by(
|
||||||
|
"sort_order", "name"
|
||||||
)
|
)
|
||||||
return ctx
|
return ctx
|
||||||
|
|
||||||
@@ -76,9 +77,8 @@ class ArticleIndexPage(RoutablePageMixin, Page):
|
|||||||
tag_slug = request.GET.get("tag")
|
tag_slug = request.GET.get("tag")
|
||||||
articles = self.get_articles()
|
articles = self.get_articles()
|
||||||
all_articles = articles
|
all_articles = articles
|
||||||
available_categories = (
|
category_ids = all_articles.values_list("category_id", flat=True)
|
||||||
Category.objects.filter(articles__in=all_articles).distinct().order_by("sort_order", "name")
|
available_categories = Category.objects.filter(id__in=category_ids).order_by("sort_order", "name")
|
||||||
)
|
|
||||||
category_links = [
|
category_links = [
|
||||||
{"category": category, "url": self.get_category_url(category)}
|
{"category": category, "url": self.get_category_url(category)}
|
||||||
for category in available_categories
|
for category in available_categories
|
||||||
@@ -111,7 +111,8 @@ class ArticleIndexPage(RoutablePageMixin, Page):
|
|||||||
|
|
||||||
@route(r"^category/(?P<category_slug>[-\w]+)/$")
|
@route(r"^category/(?P<category_slug>[-\w]+)/$")
|
||||||
def category_listing(self, request, category_slug):
|
def category_listing(self, request, category_slug):
|
||||||
category_qs = Category.objects.filter(articles__in=self.get_articles()).distinct()
|
category_ids = self.get_articles().values_list("category_id", flat=True)
|
||||||
|
category_qs = Category.objects.filter(id__in=category_ids)
|
||||||
category = get_object_or_404(category_qs, slug=category_slug)
|
category = get_object_or_404(category_qs, slug=category_slug)
|
||||||
return self.render(request, context_overrides=self.get_listing_context(request, active_category=category))
|
return self.render(request, context_overrides=self.get_listing_context(request, active_category=category))
|
||||||
|
|
||||||
@@ -187,7 +188,7 @@ class TagMetadata(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class ArticlePage(SeoMixin, Page):
|
class ArticlePage(SeoMixin, Page):
|
||||||
category = models.ForeignKey("blog.Category", on_delete=PROTECT, related_name="articles")
|
category = models.ForeignKey("blog.Category", on_delete=PROTECT, related_name="+")
|
||||||
author = models.ForeignKey("authors.Author", on_delete=PROTECT)
|
author = models.ForeignKey("authors.Author", on_delete=PROTECT)
|
||||||
hero_image = models.ForeignKey(
|
hero_image = models.ForeignKey(
|
||||||
"wagtailimages.Image", null=True, blank=True, on_delete=SET_NULL, related_name="+"
|
"wagtailimages.Image", null=True, blank=True, on_delete=SET_NULL, related_name="+"
|
||||||
|
|||||||
Reference in New Issue
Block a user