Minor fixes on search api viewset.

remotes/origin/enhancement/email-actions
Andrey Antukh 2013-07-22 23:47:53 +02:00
parent a022085497
commit e86f393bfd
2 changed files with 36 additions and 6 deletions

View File

@ -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)

View File

@ -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"]