update location filter

This commit is contained in:
Mohamed Nouffer
2022-10-06 17:42:12 +05:30
parent 29490698f5
commit 3ad357f417
10 changed files with 154 additions and 22 deletions

View File

@ -1,15 +1,17 @@
from curses.ascii import NUL
from django.core.serializers import serialize
from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, GifuAreas, RogUser, CustomUser, UserTracks
from rest_framework import viewsets
from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, JPN_perfSerializer, JPN_sub_perSerializer, LocationCatSerializer, CreateUserSerializer, UserSerializer, LoginUserSerializer, UseractionsSerializer, UserDestinationSerializer, GifuAreaSerializer, LocationEventNameSerializer, RogUserSerializer, UserTracksSerializer
from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, JPN_perfSerializer, JPN_sub_perSerializer, LocationCatSerializer, CreateUserSerializer, UserSerializer, LoginUserSerializer, UseractionsSerializer, UserDestinationSerializer, GifuAreaSerializer, LocationEventNameSerializer, RogUserSerializer, UserTracksSerializer, ChangePasswordSerializer
from knox.models import AuthToken
from rest_framework import viewsets, permissions, generics
from rest_framework import viewsets, permissions, generics, status
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.parsers import JSONParser, MultiPartParser
from .serializers import LocationSerializer
from django.http import JsonResponse
from rest_framework.permissions import IsAuthenticated
from .serializers import TestSerialiser
from .models import TestModel
@ -66,9 +68,9 @@ def LocationsInPerf(request):
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat)
else:
if grp:
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat, cp__gt=0, group__contains=grp)
locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, group__contains=grp)
else:
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat)
locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat)
else:
if is_rog:
if grp:
@ -77,9 +79,9 @@ def LocationsInPerf(request):
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom)
else:
if grp:
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, group__contains=grp)
locs = Location.objects.filter(geom__within=perf_geom.geom, group__contains=grp)
else:
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom)
locs = Location.objects.filter(geom__within=perf_geom.geom)
serializer = LocationSerializer(locs, many=True)
return JsonResponse(serializer.data, safe=False)
@ -99,9 +101,9 @@ def LocationsInSubPerf(request):
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat)
else:
if grp:
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat, group__contains=grp)
locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, group__contains=grp)
else:
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat)
locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat)
else:
if is_rog:
if grp:
@ -109,7 +111,7 @@ def LocationsInSubPerf(request):
else:
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom)
else:
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom)
locs = Location.objects.filter(geom__within=perf_geom.geom)
serializer = LocationSerializer(locs, many=True)
return JsonResponse(serializer.data, safe=False)
@ -138,9 +140,9 @@ def LocationInBound(request):
locs = Location.objects.filter(~Q(cp=0), geom__within=pl, category=cat, event_name__isnull=True)
else:
if grp:
locs = Location.objects.filter(~Q(cp=0), geom__within=pl, category=cat, event_name__isnull=True, cp=0, group__contains=grp)
locs = Location.objects.filter(geom__within=pl, category=cat, event_name__isnull=True, group__contains=grp)
else:
locs = Location.objects.filter(~Q(cp=0), geom__within=pl, category=cat, event_name__isnull=True)
locs = Location.objects.filter(geom__within=pl, category=cat, event_name__isnull=True)
else:
if is_rog:
if grp:
@ -149,9 +151,9 @@ def LocationInBound(request):
locs = Location.objects.filter(~Q(cp=0), geom__within=pl, event_name__isnull=True)
else:
if grp:
locs = Location.objects.filter(~Q(cp=0), geom__within=pl, event_name__isnull=True, group__contains=grp)
locs = Location.objects.filter(geom__within=pl, event_name__isnull=True, group__contains=grp)
else:
locs = Location.objects.filter(~Q(cp=0), geom__within=pl, event_name__isnull=True)
locs = Location.objects.filter(geom__within=pl, event_name__isnull=True)
if len(locs) > 50:
return JsonResponse({"too_many_points": True}, safe=False, status=500)
else:
@ -236,7 +238,7 @@ def CatByCity(request):
serializer = LocationCatSerializer(cats, many=True)
return JsonResponse(serializer.data, safe=False)
else:
return null
return None
@ -392,9 +394,9 @@ def CustomAreaLocations(request):
locs = Location.objects.filter(~Q(cp=0), event_name__isnull=False, category=cat, event_name=name)
else:
if grp:
locs = Location.objects.filter(~Q(cp=0), event_name__isnull=False, category=cat, event_name=name, group__contains=grp)
locs = Location.objects.filter(event_name__isnull=False, category=cat, event_name=name, group__contains=grp)
else:
locs = Location.objects.filter(~Q(cp=0), event_name__isnull=False, category=cat, event_name=name)
locs = Location.objects.filter(event_name__isnull=False, category=cat, event_name=name)
else:
if is_rog:
if grp:
@ -403,9 +405,9 @@ def CustomAreaLocations(request):
locs = Location.objects.filter(~Q(cp=0), event_name__isnull=False, event_name=name)
else:
if grp:
locs = Location.objects.filter(~Q(cp=0), event_name__isnull=False, event_name=name, group__contains=grp)
locs = Location.objects.filter(event_name__isnull=False, event_name=name, group__contains=grp)
else:
locs = Location.objects.filter(~Q(cp=0), event_name__isnull=False, event_name=name)
locs = Location.objects.filter(event_name__isnull=False, event_name=name)
serializer = LocationSerializer(locs, many=True)
return JsonResponse(serializer.data, safe=False)
@ -418,6 +420,41 @@ def CustomAreaNames(request):
return JsonResponse(serializer.data, safe=False)
class ChangePasswordView(generics.UpdateAPIView):
"""
An endpoint for changing password.
"""
serializer_class = ChangePasswordSerializer
model = CustomUser
permission_classes = (IsAuthenticated,)
def get_object(self, queryset=None):
obj = self.request.user
return obj
def update(self, request, *args, **kwargs):
self.object = self.get_object()
serializer = self.get_serializer(data=request.data)
if serializer.is_valid():
# Check old password
if not self.object.check_password(serializer.data.get("old_password")):
return Response({"old_password": ["Wrong password."]}, status=status.HTTP_400_BAD_REQUEST)
# set_password also hashes the password that the user will get
self.object.set_password(serializer.data.get("new_password"))
self.object.save()
response = {
'status': 'success',
'code': status.HTTP_200_OK,
'message': 'Password updated successfully',
'data': []
}
return Response(response)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class TestActionViewSet(viewsets.ModelViewSet):
serializer_class = TestSerialiser
queryset = TestModel.objects.all()