diff --git a/com/tests/test_views.py b/com/tests/test_views.py index 103deaac..f80839ab 100644 --- a/com/tests/test_views.py +++ b/com/tests/test_views.py @@ -17,6 +17,7 @@ from unittest.mock import patch import pytest from django.conf import settings +from django.contrib.sites.models import Site from django.core.files.uploadedfile import SimpleUploadedFile from django.test import TestCase from django.urls import reverse @@ -24,7 +25,7 @@ from django.utils import html from django.utils.timezone import localtime, now from django.utils.translation import gettext as _ from model_bakery import baker -from pytest_django.asserts import assertRedirects +from pytest_django.asserts import assertNumQueries, assertRedirects from club.models import Club, Membership from com.models import News, NewsDate, Poster, Sith, Weekmail, WeekmailArticle @@ -324,6 +325,10 @@ class TestNewsCreation(TestCase): @pytest.mark.django_db def test_feed(client): """Smoke test that checks that the atom feed is working""" - resp = client.get(reverse("com:news_feed")) - assert resp.status_code == 200 - assert resp.headers["Content-Type"] == "application/rss+xml; charset=utf-8" + Site.objects.clear_cache() + with assertNumQueries(2): + # get sith domain with Site api: 1 request + # get all news and related info: 1 request + resp = client.get(reverse("com:news_feed")) + assert resp.status_code == 200 + assert resp.headers["Content-Type"] == "application/rss+xml; charset=utf-8" diff --git a/com/views.py b/com/views.py index e5ef6227..0ab8fc1c 100644 --- a/com/views.py +++ b/com/views.py @@ -281,7 +281,7 @@ class NewsFeed(Feed): news__is_moderated=True, end_date__gte=timezone.now() - (relativedelta(months=6)), ) - .prefetch_related("news") + .select_related("news", "news__author") .order_by("-start_date") ) diff --git a/core/management/commands/populate.py b/core/management/commands/populate.py index c8e8d046..26bc6074 100644 --- a/core/management/commands/populate.py +++ b/core/management/commands/populate.py @@ -27,7 +27,7 @@ from typing import ClassVar, NamedTuple from django.conf import settings from django.contrib.auth.models import Permission -from django.contrib.sites.shortcuts import get_current_site +from django.contrib.sites.models import Site from django.core.management import call_command from django.core.management.base import BaseCommand from django.db import connection @@ -93,7 +93,7 @@ class Command(BaseCommand): Sith.objects.create(weekmail_destinations="etudiants@git.an personnel@git.an") - site = get_current_site(None) + site = Site.objects.get_current() site.domain = settings.SITH_URL site.name = settings.SITH_NAME site.save()