Build Lake Eufaula recommendation vertical slice
This commit is contained in:
@@ -1,11 +1,29 @@
|
||||
from datetime import timedelta
|
||||
from django.http import JsonResponse
|
||||
from rest_framework import permissions, viewsets
|
||||
from django.utils import timezone
|
||||
from rest_framework import permissions, status, viewsets
|
||||
from rest_framework.decorators import api_view, permission_classes
|
||||
from rest_framework.response import Response
|
||||
from .models import Recommendation, Species, Trip, WaterBody
|
||||
from .recommendations import build_bass_plan
|
||||
from .serializers import RecommendationSerializer, SpeciesSerializer, TripSerializer, WaterBodySerializer
|
||||
|
||||
def health(_request):
|
||||
return JsonResponse({"status": "ok", "service": "fishiq-api"})
|
||||
|
||||
@api_view(["GET", "POST"])
|
||||
@permission_classes([permissions.AllowAny])
|
||||
def demo_plan(request):
|
||||
starts_at = timezone.now() + timedelta(days=3)
|
||||
supplied_start = request.data.get("starts_at") if request.method == "POST" else request.query_params.get("starts_at")
|
||||
if supplied_start:
|
||||
try:
|
||||
starts_at = timezone.datetime.fromisoformat(supplied_start.replace("Z", "+00:00"))
|
||||
if timezone.is_naive(starts_at): starts_at = timezone.make_aware(starts_at)
|
||||
except ValueError:
|
||||
return Response({"starts_at": ["Use an ISO-8601 date and time."]}, status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response({"trip": {"water_body": "Lake Eufaula", "region": "Alabama / Georgia", "target_species": "Largemouth bass", "starts_at": starts_at.isoformat(), "duration_hours": 5}, "plan": build_bass_plan(starts_at)})
|
||||
|
||||
class ReadOnlyCatalogViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
permission_classes = [permissions.AllowAny]
|
||||
|
||||
@@ -27,4 +45,3 @@ class RecommendationViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
serializer_class = RecommendationSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
def get_queryset(self): return Recommendation.objects.filter(trip__owner=self.request.user)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user