OpenDroneMap-WebODM/app/api/users.py

24 wiersze
948 B
Python
Czysty Zwykły widok Historia

2021-10-18 20:42:13 +00:00
from django.contrib.auth.models import User
2021-10-19 19:51:44 +00:00
from rest_framework.views import APIView
from rest_framework import exceptions, permissions, parsers
from rest_framework.response import Response
2021-10-18 20:42:13 +00:00
2021-10-19 19:51:44 +00:00
class UsersList(APIView):
permission_classes = (permissions.IsAuthenticated,)
parser_classes = (parsers.JSONParser, parsers.FormParser,)
2021-10-18 20:42:13 +00:00
2021-10-19 19:51:44 +00:00
def get(self, request):
qs = User.objects.all()
2021-10-18 20:42:13 +00:00
search = self.request.query_params.get('search', None)
if search is not None:
2021-10-19 19:51:44 +00:00
qs = qs.filter(username__istartswith=search) | qs.filter(email__istartswith=search)
2021-10-18 20:42:13 +00:00
limit = self.request.query_params.get('limit', None)
if limit is not None:
try:
2021-10-19 19:51:44 +00:00
qs = qs[:abs(int(limit))]
2021-10-18 20:42:13 +00:00
except ValueError:
raise exceptions.ValidationError(detail="Invalid query parameters")
2021-10-19 19:51:44 +00:00
return Response([{'username': u.username, 'email': u.email} for u in qs])