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.permissions import IsAuthenticated
|
||||
from rest_framework import status, generics, viewsets
|
||||
from rest_framework import exceptions as excp
|
||||
|
||||
import django_filters
|
||||
from haystack import query, inputs
|
||||
from djmail.template_mail import MagicMailBuilder
|
||||
|
||||
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 import exceptions as excp
|
||||
from greenmine.scrum import models
|
||||
|
||||
|
||||
|
@ -35,7 +35,11 @@ class RolesViewSet(viewsets.ViewSet):
|
|||
return Response(serializer.data)
|
||||
|
||||
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)
|
||||
return Response(serializer.data)
|
||||
|
||||
|
@ -111,14 +115,14 @@ class UsersViewSet(viewsets.ViewSet):
|
|||
return Response({"detail": "Mail sended successful!"})
|
||||
|
||||
@action(methods=["GET", "POST"])
|
||||
def logout(self, request, pk=None)
|
||||
def logout(self, request, pk=None):
|
||||
logout(request)
|
||||
return Response()
|
||||
|
||||
|
||||
class Search(viewsets.ViewSet):
|
||||
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)
|
||||
|
||||
try:
|
||||
|
@ -126,6 +130,9 @@ class Search(viewsets.ViewSet):
|
|||
except models.Project.DoesNotExist:
|
||||
raise excp.PermissionDenied({"detail": "Wrong project id"})
|
||||
|
||||
#if not text:
|
||||
# raise excp.BadRequest("text parameter must be contains text")
|
||||
|
||||
queryset = query.SearchQuerySet()
|
||||
queryset = queryset.filter(text=inputs.AutoQuery(text))
|
||||
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