2026-08-24 15:54:08 +03:30
|
|
|
from django.shortcuts import get_object_or_404, render
|
2026-08-31 15:11:52 +03:30
|
|
|
from django.utils import timezone
|
2026-08-24 15:54:08 +03:30
|
|
|
|
|
|
|
|
from .models import Article
|
|
|
|
|
|
|
|
|
|
|
2026-08-31 15:11:52 +03:30
|
|
|
def _visible_articles():
|
|
|
|
|
# published_at یعنی «از این تاریخ به بعد دیده شود» — نه فقط یک برچسبِ
|
|
|
|
|
# نمایشی. همین باعث میشود بشود چند مقاله را از قبل با is_published=True
|
|
|
|
|
# و published_at آینده ثبت کرد و هرکدام سرِ تاریخِ خودش خودکار ظاهر شود
|
|
|
|
|
# (مثلا برای انتشار پلکانیِ هر چند روز یکبار، بدون نیاز به کرون/تسک جدا).
|
|
|
|
|
return Article.objects.filter(is_published=True, published_at__lte=timezone.localdate())
|
|
|
|
|
|
|
|
|
|
|
2026-08-24 15:54:08 +03:30
|
|
|
def article_list(request):
|
2026-08-31 15:11:52 +03:30
|
|
|
articles = _visible_articles()
|
2026-08-24 15:54:08 +03:30
|
|
|
return render(request, "landing/article_list.html", {"articles": articles})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def article_detail(request, slug):
|
2026-08-31 15:11:52 +03:30
|
|
|
article = get_object_or_404(_visible_articles(), slug=slug)
|
|
|
|
|
related = _visible_articles().exclude(pk=article.pk)[:3]
|
|
|
|
|
return render(request, "landing/article_detail.html", {"article": article, "related": related})
|