added api/history
This commit is contained in:
parent
2aef4d4756
commit
cc5187c3a1
15 changed files with 109 additions and 17 deletions
52
api/views.py
52
api/views.py
|
|
@ -1,15 +1,18 @@
|
|||
from rest_framework import status, generics
|
||||
from rest_framework import status, generics, permissions
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
from django.utils import timezone
|
||||
from .models import Prediction, User, UserPrediction
|
||||
from .serializers import PredictionSerializer, PredictionRequestSerializer
|
||||
from .serializers import PredictionSerializer, PredictionRequestSerializer, PredictionListSerializer, PredictionDetailSerializer
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
import requests
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.utils.decorators import method_decorator
|
||||
from rest_framework.permissions import AllowAny
|
||||
from .services.tawhiri import TawhiriClient
|
||||
from django.contrib.auth import get_user_model
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
def get_prediction_from_tawhiri(params):
|
||||
|
|
@ -22,9 +25,12 @@ def get_prediction_from_tawhiri(params):
|
|||
raise Exception(f"Tawhiri error: {response.status_code} {response.text}")
|
||||
|
||||
class PredictionCreateView(APIView):
|
||||
permission_classes = [AllowAny]
|
||||
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def post(self, request):
|
||||
print("DEBUG: request.user =", request.user)
|
||||
print("DEBUG: request.user.id =", request.user.id)
|
||||
|
||||
serializer = PredictionRequestSerializer(data=request.data)
|
||||
if not serializer.is_valid():
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
|
@ -70,5 +76,43 @@ class PredictionDeleteView(APIView):
|
|||
except Prediction.DoesNotExist:
|
||||
return Response({"error": "Not found"}, status=404)
|
||||
|
||||
|
||||
|
||||
class PredictionHistoryListView(generics.ListAPIView):
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
serializer_class = PredictionListSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
return Prediction.objects.filter(
|
||||
id__in=UserPrediction.objects.filter(user=self.request.user).values_list('prediction_id', flat=True),
|
||||
deleted_at__isnull=True
|
||||
)
|
||||
|
||||
|
||||
class PredictionHistoryDetailView(generics.RetrieveAPIView):
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
serializer_class = PredictionDetailSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
return Prediction.objects.filter(
|
||||
id__in=UserPrediction.objects.filter(user=self.request.user).values_list('prediction_id', flat=True),
|
||||
deleted_at__isnull=True
|
||||
)
|
||||
|
||||
|
||||
class PredictionHistoryDeleteView(generics.DestroyAPIView):
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def get_queryset(self):
|
||||
return Prediction.objects.filter(
|
||||
id__in=UserPrediction.objects.filter(user=self.request.user).values_list('prediction_id', flat=True),
|
||||
deleted_at__isnull=True
|
||||
)
|
||||
|
||||
def perform_destroy(self, instance):
|
||||
instance.deleted_at = timezone.now()
|
||||
instance.save()
|
||||
|
||||
|
||||
#class PredictionCreateView(APIView):
|
||||
#permission_classes = [IsAuthenticated]
|
||||
Loading…
Add table
Add a link
Reference in a new issue