2023-09-23 12:38:28 +00:00
|
|
|
from django.shortcuts import render
|
|
|
|
from django.template.loader import render_to_string
|
|
|
|
from django.utils.timezone import datetime, timedelta
|
2023-09-23 12:58:41 +00:00
|
|
|
from django.utils import timezone
|
|
|
|
from django.db.models.functions import ExtractWeek, ExtractYear
|
|
|
|
|
2023-09-23 12:38:28 +00:00
|
|
|
|
|
|
|
from ..item import models
|
|
|
|
from ..item.views import get_weeks
|
|
|
|
|
|
|
|
|
|
|
|
def week(year, month, day):
|
2023-09-23 12:58:41 +00:00
|
|
|
now = timezone.make_aware(datetime.now(), timezone.get_default_timezone())
|
2023-09-23 12:38:28 +00:00
|
|
|
context = {}
|
2023-09-23 12:58:41 +00:00
|
|
|
archive = models.Item.objects.filter(
|
|
|
|
published__lte=now
|
|
|
|
).annotate(
|
|
|
|
year=ExtractYear('published')
|
|
|
|
).annotate(
|
|
|
|
week=ExtractWeek('published')
|
|
|
|
)
|
2023-09-23 12:38:28 +00:00
|
|
|
date = datetime.strptime('%s-%s-%s' % (year, month, day), '%Y-%m-%d')
|
|
|
|
week = int(date.strftime('%W'))
|
|
|
|
year = int(year)
|
|
|
|
archive_week = archive.filter(year=year, week=week).order_by('published')
|
|
|
|
context['weeks'] = get_weeks(archive)
|
|
|
|
context['this_week'] = date.strftime('%Y-%m-%d')
|
|
|
|
context['this_year'] = date.strftime('%Y')
|
|
|
|
extra = models.Week.objects.filter(monday=context['this_week']).first()
|
|
|
|
if extra:
|
|
|
|
context['week_title'] = extra.title
|
|
|
|
context['items'] = archive_week
|
|
|
|
return render_to_string("weekly_email.html", context)
|