mirror of
https://github.com/ae-utbm/sith.git
synced 2026-10-03 17:34:15 +00:00
display the date of next happening in NewsDetailView
This commit is contained in:
1 parent
796ef72fa1
commit
a5440e3166
3 files changed
+50
-7
No files matched your search
@@ -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/>
|
||||
|
||||
@@ -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
@@ -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):
|
||||
|
||||
Reference in new issue
Block a user