display the date of next happening in NewsDetailView

This commit is contained in:
imperosol committed 2026-09-28 19:32:40 +02:00
1 parent 796ef72fa1
commit a5440e3166
3 files changed
+50 -7

No files matched your search

+12 -6
View File
@@ -39,12 +39,18 @@
<a href="{{ news.club.get_absolute_url() }}">{{ news.club }}</a>
</div>
<h4>{{ news.title }}</h4>
<p class="date">
<time datetime="{{ date.start_date.isoformat(timespec="seconds") }}">{{ date.start_date|localtime|date(DATETIME_FORMAT) }}
{{ date.start_date|localtime|time(DATETIME_FORMAT) }}</time> -
<time datetime="{{ date.end_date.isoformat(timespec="seconds") }}">{{ date.end_date|localtime|date(DATETIME_FORMAT) }}
{{ date.end_date|localtime|time(DATETIME_FORMAT) }}</time>
</p>
{% if date %}
<p class="date">
<time datetime="{{ date.start_date.isoformat(timespec="seconds") }}">
{{ date.start_date|localtime|date(DATETIME_FORMAT) }}
{{ date.start_date|localtime|time(DATETIME_FORMAT) }}
</time> -
<time datetime="{{ date.end_date.isoformat(timespec="seconds") }}">
{{ date.end_date|localtime|date(DATETIME_FORMAT) }}
{{ date.end_date|localtime|time(DATETIME_FORMAT) }}
</time>
</p>
{% endif %}
<div class="news_content">
<div><em>{{ news.summary|markdown }}</em></div>
<br/>
+35
View File
@@ -26,6 +26,7 @@ from django.utils import html
from django.utils.timezone import now
from django.utils.translation import gettext as _
from model_bakery import baker
from model_bakery.recipe import Recipe
from pytest_django.asserts import assertNumQueries, assertRedirects
from club.models import Club, ClubRole, Membership
@@ -362,3 +363,37 @@ def test_moderate_poster(client: Client, referer: str | None):
poster.refresh_from_db()
assert poster.is_moderated
assert poster.moderator == user
class TestNewsDetail(TestCase):
@classmethod
def setUpTestData(cls) -> None:
cls.news = baker.make(News, is_published=True)
cls.user = subscriber_user.make()
cls.url = reverse("com:news_detail", kwargs={"news_id": cls.news.id})
def test_page_ok(self):
self.client.force_login(self.user)
res = self.client.get(self.url)
assert res.status_code == 200
def test_displayed_date(self):
self.client.force_login(self.user)
n = now()
date_recipe = Recipe(NewsDate, news=self.news)
date_recipe.make(
start_date=n - timedelta(days=1, hours=6), end_date=n - timedelta(days=1)
)
date_recipe.make(
start_date=n - timedelta(hours=6), end_date=n + timedelta(hours=1)
)
expected = date_recipe.make( # we expect the next happening date.
start_date=n + timedelta(days=1), end_date=n + timedelta(days=1, hours=1)
)
date_recipe.make(
start_date=n + timedelta(days=2), end_date=n + timedelta(days=2, hours=1)
)
self.client.force_login(self.user)
res = self.client.get(self.url)
assert res.status_code == 200
assert res.context_data["date"] == expected
+3 -1
View File
@@ -301,7 +301,9 @@ class NewsDetailView(CanViewMixin, DetailView):
queryset = News.objects.select_related("club", "author", "moderator")
def get_context_data(self, **kwargs):
return super().get_context_data(**kwargs) | {"date": self.object.dates.first()}
return super().get_context_data(**kwargs) | {
"date": self.object.dates.filter(start_date__gt=now()).first()
}
class NewsFeed(Feed):