Adding role list and user filter to the API
parent
14a68c207e
commit
d3cbb2cb24
|
@ -13,10 +13,12 @@ from rest_framework.permissions import IsAuthenticated
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework import generics
|
from rest_framework import generics
|
||||||
|
|
||||||
from greenmine.base.serializers import LoginSerializer, UserLogged, UserSerializer
|
from greenmine.base.serializers import LoginSerializer, UserLogged, UserSerializer, RoleSerializer
|
||||||
from greenmine.base.models import User
|
from greenmine.base.models import User, Role
|
||||||
from greenmine.scrum import models
|
from greenmine.scrum import models
|
||||||
|
|
||||||
|
import django_filters
|
||||||
|
|
||||||
|
|
||||||
class ApiRoot(APIView):
|
class ApiRoot(APIView):
|
||||||
def get(self, request, format=None):
|
def get(self, request, format=None):
|
||||||
|
@ -41,9 +43,18 @@ class ApiRoot(APIView):
|
||||||
'question_responses': reverse('question-response-list', request=request, format=format),
|
'question_responses': reverse('question-response-list', request=request, format=format),
|
||||||
'wiki/pages': reverse('wiki-page-list', request=request, format=format),
|
'wiki/pages': reverse('wiki-page-list', request=request, format=format),
|
||||||
'users': reverse('user-list', request=request, format=format),
|
'users': reverse('user-list', request=request, format=format),
|
||||||
|
'roles': reverse('user-roles', request=request, format=format),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
class RoleList(generics.ListCreateAPIView):
|
||||||
|
model = Role
|
||||||
|
serializer_class = RoleSerializer
|
||||||
|
permission_classes = (IsAuthenticated,)
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
return self.model.objects.all()
|
||||||
|
|
||||||
|
|
||||||
#class UserFilter(django_filters.FilterSet):
|
#class UserFilter(django_filters.FilterSet):
|
||||||
# no_milestone = django_filters.NumberFilter(name="mileston", lookup_type='isnull')
|
# no_milestone = django_filters.NumberFilter(name="mileston", lookup_type='isnull')
|
||||||
|
@ -53,13 +64,28 @@ class ApiRoot(APIView):
|
||||||
# fields = ['project', 'milestone', 'no_milestone']
|
# fields = ['project', 'milestone', 'no_milestone']
|
||||||
|
|
||||||
|
|
||||||
|
class UserFilter(django_filters.FilterSet):
|
||||||
|
is_active = django_filters.BooleanFilter(name="is_active")
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = User
|
||||||
|
fields = ['is_active',]
|
||||||
|
|
||||||
|
|
||||||
class UserList(generics.ListCreateAPIView):
|
class UserList(generics.ListCreateAPIView):
|
||||||
model = User
|
model = User
|
||||||
serializer_class = UserSerializer
|
serializer_class = UserSerializer
|
||||||
|
filter_class = UserFilter
|
||||||
permission_classes = (IsAuthenticated,)
|
permission_classes = (IsAuthenticated,)
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
projects = models.Project.objects.filter(members=self.request.user)
|
projects = models.Project.objects.filter(members=self.request.user)
|
||||||
|
|
||||||
|
#Project filtering
|
||||||
|
project = self.request.QUERY_PARAMS.get('project', None)
|
||||||
|
if project is not None:
|
||||||
|
projects = projects.filter(id=project)
|
||||||
|
|
||||||
return super(UserList, self).get_queryset().filter(projects__in=projects)\
|
return super(UserList, self).get_queryset().filter(projects__in=projects)\
|
||||||
.order_by('id').distinct()
|
.order_by('id').distinct()
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from greenmine.base.models import User
|
from greenmine.base.models import User, Role
|
||||||
|
|
||||||
|
|
||||||
class UserLogged(object):
|
class UserLogged(object):
|
||||||
|
@ -56,5 +56,10 @@ class LoginSerializer(serializers.Serializer):
|
||||||
class UserSerializer(serializers.ModelSerializer):
|
class UserSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
exclude = ('password',)
|
fields = ('id', 'username', 'first_name', 'last_name', 'color', 'is_active',)
|
||||||
#fields = ('id', 'username')
|
|
||||||
|
|
||||||
|
class RoleSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Role
|
||||||
|
fields = ('id', 'name', 'slug', 'permissions',)
|
||||||
|
|
|
@ -9,5 +9,6 @@ urlpatterns = format_suffix_patterns(patterns('',
|
||||||
url(r'^auth/login/$', api.Login.as_view(), name='login'),
|
url(r'^auth/login/$', api.Login.as_view(), name='login'),
|
||||||
url(r'^auth/logout/$', api.Logout.as_view(), name='logout'),
|
url(r'^auth/logout/$', api.Logout.as_view(), name='logout'),
|
||||||
url(r'^users/$', api.UserList.as_view(), name="user-list"),
|
url(r'^users/$', api.UserList.as_view(), name="user-list"),
|
||||||
|
url(r'^roles/$', api.RoleList.as_view(), name="user-roles"),
|
||||||
url(r'^$', api.ApiRoot.as_view(), name='api_root'),
|
url(r'^$', api.ApiRoot.as_view(), name='api_root'),
|
||||||
))
|
))
|
||||||
|
|
Loading…
Reference in New Issue