mirror of
https://github.com/lemeow125/StudE-Backend.git
synced 2024-11-17 06:19:24 +08:00
Made improvements to student status serializer
This commit is contained in:
parent
813734582a
commit
451c5ec00b
1 changed files with 9 additions and 5 deletions
|
@ -1,4 +1,5 @@
|
|||
from django.shortcuts import get_object_or_404
|
||||
from django.contrib.gis.geos import Point
|
||||
from requests import Response
|
||||
from rest_framework import generics, viewsets, exceptions
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
|
@ -36,13 +37,14 @@ class StudentStatusListByStudentStatusLocation(generics.ListAPIView):
|
|||
def get_queryset(self):
|
||||
user = self.request.user
|
||||
user_status = StudentStatus.objects.filter(user=user).first()
|
||||
print('User Location: ', user_status.location)
|
||||
if user_status.location is None:
|
||||
raise exceptions.ValidationError("User location is not set")
|
||||
|
||||
user_location = fromstr(
|
||||
user_status.location, srid=4326)
|
||||
|
||||
return StudentStatus.objects.filter(user != user).filter(subject__in=user.subjects.all()).annotate(distance=Distance('location', user_location)).filter(distance__lte=50)
|
||||
if user_status.active is False:
|
||||
raise exceptions.ValidationError("Student Status is not active")
|
||||
|
||||
return StudentStatus.objects.filter(active=True and user != user).filter(subject__in=user.subjects.all()).annotate(distance=Distance('location', user_location)).filter(distance__lte=50)
|
||||
|
||||
|
||||
class StudentStatusListByCurrentLocation(viewsets.ViewSet):
|
||||
|
@ -53,11 +55,13 @@ class StudentStatusListByCurrentLocation(viewsets.ViewSet):
|
|||
def create(self, request):
|
||||
user = self.request.user
|
||||
location_str = request.data.get('location')
|
||||
|
||||
# If location is not specified in request, throw error
|
||||
if not location_str:
|
||||
raise exceptions.ValidationError("Location is required")
|
||||
|
||||
user_location = fromstr(location_str, srid=4326)
|
||||
queryset = StudentStatus.objects.filter(user != user).filter(subject__in=user.subjects.all()).annotate(
|
||||
queryset = StudentStatus.objects.filter(active=True and user != user).filter(subject__in=user.subjects.all()).annotate(
|
||||
distance=Distance('location', user_location)).filter(distance__lte=50)
|
||||
serializer = StudentStatusLocationSerializer(queryset, many=True)
|
||||
return Response(serializer.data)
|
||||
|
|
Loading…
Reference in a new issue