Minor fixes on search api viewset.
parent
a022085497
commit
e86f393bfd
|
@ -11,17 +11,17 @@ from rest_framework.decorators import action
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
from rest_framework import status, generics, viewsets
|
from rest_framework import status, generics, viewsets
|
||||||
from rest_framework import exceptions as excp
|
|
||||||
|
|
||||||
import django_filters
|
import django_filters
|
||||||
from haystack import query, inputs
|
from haystack import query, inputs
|
||||||
from djmail.template_mail import MagicMailBuilder
|
from djmail.template_mail import MagicMailBuilder
|
||||||
|
|
||||||
from greenmine.base.serializers import (LoginSerializer, UserLogged,
|
from greenmine.base.serializers import (LoginSerializer, UserLogged,
|
||||||
UserSerializer, RoleSerializer)
|
UserSerializer, RoleSerializer,
|
||||||
|
SearchSerializer)
|
||||||
|
|
||||||
from greenmine.base.serializers import SearchSerializer
|
|
||||||
from greenmine.base.models import User, Role
|
from greenmine.base.models import User, Role
|
||||||
|
from greenmine.base import exceptions as excp
|
||||||
from greenmine.scrum import models
|
from greenmine.scrum import models
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,7 +35,11 @@ class RolesViewSet(viewsets.ViewSet):
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
def retrieve(self, request, pk=None):
|
def retrieve(self, request, pk=None):
|
||||||
role = Role.objects.get(pk=pk)
|
try:
|
||||||
|
role = Role.objects.get(pk=pk)
|
||||||
|
except Role.DoesNotExist:
|
||||||
|
raise excp.NotFound()
|
||||||
|
|
||||||
serializer = self.serializer_class(role)
|
serializer = self.serializer_class(role)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
@ -111,14 +115,14 @@ class UsersViewSet(viewsets.ViewSet):
|
||||||
return Response({"detail": "Mail sended successful!"})
|
return Response({"detail": "Mail sended successful!"})
|
||||||
|
|
||||||
@action(methods=["GET", "POST"])
|
@action(methods=["GET", "POST"])
|
||||||
def logout(self, request, pk=None)
|
def logout(self, request, pk=None):
|
||||||
logout(request)
|
logout(request)
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
|
|
||||||
class Search(viewsets.ViewSet):
|
class Search(viewsets.ViewSet):
|
||||||
def list(self, request, **kwargs):
|
def list(self, request, **kwargs):
|
||||||
text = request.QUERY_PARAMS.get('text', None)
|
text = request.QUERY_PARAMS.get('text', "")
|
||||||
project_id = request.QUERY_PARAMS.get('project', None)
|
project_id = request.QUERY_PARAMS.get('project', None)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -126,6 +130,9 @@ class Search(viewsets.ViewSet):
|
||||||
except models.Project.DoesNotExist:
|
except models.Project.DoesNotExist:
|
||||||
raise excp.PermissionDenied({"detail": "Wrong project id"})
|
raise excp.PermissionDenied({"detail": "Wrong project id"})
|
||||||
|
|
||||||
|
#if not text:
|
||||||
|
# raise excp.BadRequest("text parameter must be contains text")
|
||||||
|
|
||||||
queryset = query.SearchQuerySet()
|
queryset = query.SearchQuerySet()
|
||||||
queryset = queryset.filter(text=inputs.AutoQuery(text))
|
queryset = queryset.filter(text=inputs.AutoQuery(text))
|
||||||
queryset = queryset.filter(project_id=project_id)
|
queryset = queryset.filter(project_id=project_id)
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from rest_framework import exceptions
|
||||||
|
from rest_framework import status
|
||||||
|
|
||||||
|
|
||||||
|
class PermissionDenied(exceptions.PermissionDenied):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class NotFound(exceptions.APIException):
|
||||||
|
status_code = status.HTTP_404_NOT_FOUND
|
||||||
|
default_detail = "Not found"
|
||||||
|
|
||||||
|
def __init__(self, detail=None):
|
||||||
|
self.detail = detail or self.default_detail
|
||||||
|
|
||||||
|
|
||||||
|
class BadRequest(exceptions.ParseError):
|
||||||
|
default_detail = "Bad request"
|
||||||
|
|
||||||
|
|
||||||
|
__all__ = ["PermissionDenied", "NotFound", "BadRequest"]
|
Loading…
Reference in New Issue