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 generics
|
||||
|
||||
from greenmine.base.serializers import LoginSerializer, UserLogged, UserSerializer
|
||||
from greenmine.base.models import User
|
||||
from greenmine.base.serializers import LoginSerializer, UserLogged, UserSerializer, RoleSerializer
|
||||
from greenmine.base.models import User, Role
|
||||
from greenmine.scrum import models
|
||||
|
||||
import django_filters
|
||||
|
||||
|
||||
class ApiRoot(APIView):
|
||||
def get(self, request, format=None):
|
||||
|
@ -41,9 +43,18 @@ class ApiRoot(APIView):
|
|||
'question_responses': reverse('question-response-list', request=request, format=format),
|
||||
'wiki/pages': reverse('wiki-page-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):
|
||||
# no_milestone = django_filters.NumberFilter(name="mileston", lookup_type='isnull')
|
||||
|
@ -53,13 +64,28 @@ class ApiRoot(APIView):
|
|||
# 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):
|
||||
model = User
|
||||
serializer_class = UserSerializer
|
||||
filter_class = UserFilter
|
||||
permission_classes = (IsAuthenticated,)
|
||||
|
||||
def get_queryset(self):
|
||||
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)\
|
||||
.order_by('id').distinct()
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from rest_framework import serializers
|
||||
from greenmine.base.models import User
|
||||
from greenmine.base.models import User, Role
|
||||
|
||||
|
||||
class UserLogged(object):
|
||||
|
@ -56,5 +56,10 @@ class LoginSerializer(serializers.Serializer):
|
|||
class UserSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = User
|
||||
exclude = ('password',)
|
||||
#fields = ('id', 'username')
|
||||
fields = ('id', 'username', 'first_name', 'last_name', 'color', 'is_active',)
|
||||
|
||||
|
||||
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/logout/$', api.Logout.as_view(), name='logout'),
|
||||
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'),
|
||||
))
|
||||
|
|
Loading…
Reference in New Issue