Files
mwy/backend/journal/views.py
flower_linux 6cc3fdf411 mwy2.0
2026-05-20 16:31:07 +08:00

67 lines
2.0 KiB
Python

from datetime import datetime
from zoneinfo import ZoneInfo
from django.utils import timezone
from rest_framework.generics import CreateAPIView, ListAPIView
from rest_framework.response import Response
from rest_framework.views import APIView
from .models import Config, Guestbook, Memory
from .serializers import GuestbookCreateSerializer, MemorySerializer
class MemoryListView(ListAPIView):
serializer_class = MemorySerializer
def get_queryset(self):
return (
Memory.objects.all()
.order_by("story_order", "id")
.prefetch_related("photos")
)
class GuestbookCreateView(CreateAPIView):
queryset = Guestbook.objects.all()
serializer_class = GuestbookCreateSerializer
class StatusView(APIView):
def get(self, request, *args, **kwargs):
shanghai = ZoneInfo("Asia/Shanghai")
now = timezone.now()
default_together = datetime(2026, 5, 4, 0, 0, 0, tzinfo=shanghai)
config = Config.objects.filter(pk=1).first()
if config is None:
site_title = "Nepal Journey: Our Story"
together_since = default_together
unlock_at = None
else:
site_title = config.site_title or "Nepal Journey: Our Story"
ts = config.together_since
if ts is None:
together_since = default_together
else:
together_since = (
timezone.make_aware(ts, shanghai) if timezone.is_naive(ts) else ts
)
ua = config.unlock_at
if ua is None:
unlock_at = None
else:
unlock_at = (
timezone.make_aware(ua, shanghai) if timezone.is_naive(ua) else ua
)
return Response(
{
"server_time": now,
"unlocked": True,
"unlock_at": unlock_at,
"together_since": together_since,
"site_title": site_title,
}
)