diff --git a/members/serializers.py b/members/serializers.py index b61aa6f..bcf8793 100644 --- a/members/serializers.py +++ b/members/serializers.py @@ -1,7 +1,7 @@ from rest_framework import serializers from django.utils import timezone from datetime import datetime -from members.models import Member +from members.models import Member, MemberRequest from django.conf import settings @@ -36,3 +36,11 @@ class MemberSerializer(serializers.Serializer): instance.paid = validated_data.get('paid', instance.paid) instance.save() return instance + +class MemberRequestSerializer(serializers.ModelSerializer): + id = serializers.IntegerField(read_only=True) + member = MemberSerializer() + + class Meta: + model = MemberRequest + fields = ('id', 'member') diff --git a/members/views.py b/members/views.py index f8ebcb3..5d442e9 100644 --- a/members/views.py +++ b/members/views.py @@ -11,7 +11,7 @@ import requests from django.conf import settings import logging '''Rest API''' -from members.serializers import MemberSerializer +from members.serializers import MemberSerializer, MemberRequestSerializer from rest_framework import generics from rest_framework import generics, status, authentication, exceptions, permissions from rest_framework.decorators import api_view, permission_classes @@ -39,6 +39,18 @@ class MemberDetails(generics.RetrieveUpdateDestroyAPIView): permission_classes = (HasRights, permissions.IsAuthenticated, ) throttle_classes = (BurstRateThrottle, SustainedRateThrottle, ) +class MemberRequestList(generics.ListCreateAPIView): + queryset = MemberRequest.objects.all() + serializer_class = MemberRequestSerializer + permission_classes = (HasRights, permissions.IsAuthenticated, ) + throttle_classes = (BurstRateThrottle, SustainedRateThrottle, ) + +class MemberRequestDetail(generics.RetrieveUpdateDestroyAPIView): + queryset = MemberRequest.objects.all() + serializer_class = MemberRequestSerializer + permission_classes = (HasRights, permissions.IsAuthenticated, ) + throttle_classes = (BurstRateThrottle, SustainedRateThrottle, ) + ######################################## # function to validate reCaptcha def validate_recaptcha(response): diff --git a/sikweb/urls.py b/sikweb/urls.py index 58ca8a2..b279174 100644 --- a/sikweb/urls.py +++ b/sikweb/urls.py @@ -45,6 +45,8 @@ from members.views import tommy_blooper # members API from members.views import MembersList as memsListAPI from members.views import MemberDetails as memDetailAPI +from members.views import MemberRequestList as reqListAPI +from members.views import MemberRequestDetail as reqDetailAPI #infoscreen from infoscreen.views import index as infoindex from infoscreen.views import default as infodefault @@ -100,8 +102,11 @@ urlpatterns = [ url(r'^members/api/request/(?P\d+)$', handle_mem_request), url(r'^members/api/getCSV$', mem_csv_export), url(r'^members/tommy$', tommy_blooper), - url(r'^members/rest/api/members$', memsListAPI.as_view()), - url(r'^members/rest/api/members/(?P\d+)$', memDetailAPI.as_view()), + url(r'^members/rest/api/members/$', memsListAPI.as_view()), + url(r'^members/rest/api/members/(?P\d+)/$', memDetailAPI.as_view()), + url(r'^members/rest/api/requests/$', reqListAPI.as_view()), + url(r'^members/rest/api/requests/(?P\d+)/$', reqDetailAPI.as_view()), + #infoscreen url(r'^infoscreen/$', infodefault), url(r'^infoscreen/(?P\d+)$', infoindex),