Add models for user data

This commit is contained in:
ThePetrovich 2025-06-25 19:19:59 +08:00
parent b49adc60f5
commit 8f61eb0834
6 changed files with 212 additions and 32 deletions

View file

@ -2,7 +2,7 @@ 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 .models import Prediction, User
from .serializers import PredictionSerializer, PredictionRequestSerializer, PredictionListSerializer, PredictionDetailSerializer
from rest_framework.permissions import IsAuthenticated
import requests
@ -57,8 +57,7 @@ class PredictionCreateView(APIView):
print("Tawhiri error:", str(e), e.response.text if e.response else "no response")
return Response({"error": f"Tawhiri error: {str(e)}"}, status=status.HTTP_502_BAD_GATEWAY)
prediction = Prediction.objects.create(result=prediction_result)
UserPrediction.objects.create(user=request.user, prediction=prediction, created_at=timezone.now())
prediction = Prediction.objects.create(result=prediction_result, user=request.user, request=validated_data)
return Response({
"id": prediction.id,
"created_at": prediction.created_at,
@ -80,7 +79,7 @@ class PredictionListView(APIView):
return Response({'detail': 'Access to this satellite is forbidden.'}, status=403)
filters = {
'id__in': UserPrediction.objects.filter(user=user).values_list('prediction_id', flat=True),
'id__in': Prediction.objects.filter(user=user).values_list('prediction_id', flat=True),
'deleted_at__isnull': True
}
print(filters)
@ -103,8 +102,7 @@ class PredictionHistoryListView(generics.ListAPIView):
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
user=self.request.user,
)
@ -115,8 +113,7 @@ class PredictionHistoryDetailView(generics.RetrieveAPIView):
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
user=self.request.user,
)
@ -126,15 +123,9 @@ class PredictionHistoryDeleteView(generics.DestroyAPIView):
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
user=self.request.user,
)
def perform_destroy(self, instance):
instance.deleted_at = timezone.now()
instance.save()
class TelemetryListCreateView(generics.ListCreateAPIView):
serializer_class = TelemetryPacketSerializer