Micro refactor on domain api viewsets.

remotes/origin/enhancement/email-actions
Andrey Antukh 2014-04-19 22:56:48 +02:00
parent a1dba18d33
commit 9e53372555
2 changed files with 24 additions and 15 deletions

View File

@ -12,21 +12,24 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from rest_framework import viewsets
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.permissions import AllowAny, IsAuthenticated from rest_framework.permissions import IsAuthenticated
from django.http import Http404 from taiga.base.api import GenericViewSet
from taiga.base.api import ListModelMixin
from taiga.base.api import ModelCrudViewSet, UpdateModelMixin from taiga.base.api import UpdateModelMixin
from taiga.base import exceptions as exc
from .base import get_active_domain from .base import get_active_domain
from .serializers import DomainSerializer, DomainMemberSerializer from .serializers import DomainSerializer
from .permissions import DomainMembersPermission, DomainPermission from .serializers import DomainMemberSerializer
from .models import DomainMember, Domain from .permissions import DomainPermission
from .permissions import DomainMembersPermission
from .models import Domain
from .models import DomainMember
class DomainViewSet(UpdateModelMixin, viewsets.GenericViewSet): class DomainViewSet(UpdateModelMixin, GenericViewSet):
permission_classes = (DomainPermission,) permission_classes = (DomainPermission,)
serializer_class = DomainSerializer serializer_class = DomainSerializer
queryset = Domain.objects.all() queryset = Domain.objects.all()
@ -39,17 +42,23 @@ class DomainViewSet(UpdateModelMixin, viewsets.GenericViewSet):
domain_data['projects'] = None domain_data['projects'] = None
return Response(domain_data) return Response(domain_data)
def update(self, request, **kwargs): def update(self, request, *args, **kwargs):
raise Http404 raise exc.NotSupported()
def partial_update(self, request, *args, **kwargs):
raise exc.NotSupported()
def create(self, request, **kwargs): def create(self, request, **kwargs):
self.kwargs['pk'] = request.domain.pk self.kwargs['pk'] = request.domain.pk
return super().update(request, pk=request.domain.pk, **kwargs) return super().update(request, pk=request.domain.pk, **kwargs)
class DomainMembersViewSet(ModelCrudViewSet): class DomainMembersViewSet(ListModelMixin, UpdateModelMixin, GenericViewSet):
permission_classes = (IsAuthenticated, DomainMembersPermission,) permission_classes = (IsAuthenticated, DomainMembersPermission,)
serializer_class = DomainMemberSerializer serializer_class = DomainMemberSerializer
queryset = DomainMember.objects.all()
def get_queryset(self): def get_queryset(self):
return DomainMember.objects.filter(domain=get_active_domain()).distinct() domain = get_active_domain()
qs = super().get_queryset()
return qs.filter(domain=domain).distinct()

View File

@ -39,5 +39,5 @@ class DomainMembersPermission(permissions.BasePermission):
domain = get_active_domain() domain = get_active_domain()
if request.method in ["POST", "PUT", "PATCH", "GET"]: if request.method in ["POST", "PUT", "PATCH", "GET"]:
return domain.user_is_owner(request.user) return domain.user_is_owner(request.user)
else:
return False return False