예제 #1
0
 def test_create_incomplete_staff(self):
     data = {
         'username': '******',
         'password': '******',
         'first_name': 'user',
         'last_name': 'tan',
         'email': '*****@*****.**',
     }
     serializer = StaffSerializer(data=data)
     self.assertFalse(serializer.is_valid())
예제 #2
0
 def test_staff(self):
     data = {
         'username': '******',
         'password': '******',
         'confirm_password': '******',
         'first_name': 'user',
         'last_name': 'tan',
         'email': '*****@*****.**',
         'is_staff': 'True',
     }
     serializer = StaffSerializer(data=data)
     assert (serializer.is_valid())
예제 #3
0
def user_detail(request):
    if request.method == 'GET':
        if (request.user == "admin"):
            serializer = SuperStaffSerializer(request.user,
                                              context={'request': request})
        else:
            serializer = StaffSerializer(request.user,
                                         context={'request': request})
        return Response(serializer.data)
예제 #4
0
def staff_list(request):
    '''
    List staff or create new staff
    '''
    if request.method == 'GET':
        if request.user.is_superuser:
            data = []
            nextPage = 1
            previousPage = 1
            staff = User.objects.filter(is_staff=True, is_superuser=False)
            page = request.GET.get('page', 1)
            paginator = Paginator(staff, 10)
            try:
                data = paginator.page(page)
            except PageNotAnInteger:
                data = paginator.page(1)
            except EmptyPage:
                data = paginator.page(paginator.num_pages)
            serializer = StaffSerializer(data,
                                         context={'request': request},
                                         many=True)
            if data.has_next():
                nextPage = data.next_page_number()
            if data.has_previous():
                previousPage = data.previous_page_number()
            return Response({
                'data': serializer.data,
                'count': paginator.count,
                'numpages': paginator.num_pages,
                'nextlink': '/api/staff/?page=' + str(nextPage),
                'prevlink': '/api/staff/?page=' + str(previousPage)
            })
    elif request.method == 'POST':
        if request.user.is_superuser:
            serializer = StaffSerializer(data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data,
                                status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
예제 #5
0
def staff_detail(request, pk):
    """
    Retrieve, update or delete a staff by id/pk.
    """
    try:
        user = User.objects.get(pk=pk)
    except User.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        serializer = StaffSerializer(user, context={'request': request})
        return Response(serializer.data)
    elif request.method == 'PUT':
        serializer = StaffSerializer(user,
                                     data=request.data,
                                     context={'request': request})
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    elif request.method == 'DELETE':
        user.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)
예제 #6
0
def user_detail(request):
    if request.method == 'GET':
        serializer = StaffSerializer(request.user,
                                     context={'request': request})
        return Response(serializer.data)