Add REST API support to members
Members can be now retrieved one at a time is user has admin rights. Implemented also permissions and throttle rates to REST API and added required settings.py modifications to settings-sample.py file.
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
from rest_framework import serializers
|
||||||
|
from members.models import Member
|
||||||
|
|
||||||
|
class MemberSerializer(serializers.ModelSerializer):
|
||||||
|
paid = serializers.DateTimeField(source='last_paid')
|
||||||
|
class Meta:
|
||||||
|
model = Member
|
||||||
|
fields = ('id', 'first_name', 'last_name', 'email', 'POR', 'AYY', 'jas', 'created', 'paid')
|
||||||
@@ -17,6 +17,9 @@ from members.views import member_delete_confirm
|
|||||||
from members.views import member_delete
|
from members.views import member_delete
|
||||||
from members.views import payment_list
|
from members.views import payment_list
|
||||||
|
|
||||||
|
# rest api
|
||||||
|
from members.views import MemberDetail
|
||||||
|
|
||||||
# application
|
# application
|
||||||
from members.views import application_form
|
from members.views import application_form
|
||||||
from members.views import application_list
|
from members.views import application_list
|
||||||
@@ -96,6 +99,9 @@ urlpatterns = [
|
|||||||
# favourite icon
|
# favourite icon
|
||||||
url(r'^favicon\.ico$', favicon_view),
|
url(r'^favicon\.ico$', favicon_view),
|
||||||
|
|
||||||
|
# rest api url
|
||||||
|
url(r'^api/members/(?P<pk>\d+)$', MemberDetail.as_view()),
|
||||||
|
|
||||||
# email validation
|
# email validation
|
||||||
# url(r'^validate/(?P<uidb64>[0-9A-Za-z_\-\']+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', validateEmail, name='user-activation-link'),
|
# url(r'^validate/(?P<uidb64>[0-9A-Za-z_\-\']+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', validateEmail, name='user-activation-link'),
|
||||||
# url(r'^validate/success/$', validate_success),
|
# url(r'^validate/success/$', validate_success),
|
||||||
|
|||||||
+13
-1
@@ -10,11 +10,17 @@ from django.utils.translation import ugettext as _
|
|||||||
'''Email validation'''
|
'''Email validation'''
|
||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
from .tokens import email_token_generator
|
#from .tokens import email_token_generator
|
||||||
from django.utils.http import urlsafe_base64_encode
|
from django.utils.http import urlsafe_base64_encode
|
||||||
from django.utils.encoding import force_bytes
|
from django.utils.encoding import force_bytes
|
||||||
from django.core.mail import send_mail
|
from django.core.mail import send_mail
|
||||||
|
|
||||||
|
'''REST framework'''
|
||||||
|
from members.serializers import MemberSerializer
|
||||||
|
from rest_framework import generics
|
||||||
|
from rest_framework import permissions
|
||||||
|
from rest_framework.throttling import UserRateThrottle, AnonRateThrottle
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import requests
|
import requests
|
||||||
import logging
|
import logging
|
||||||
@@ -502,3 +508,9 @@ def email_on_accept(sender, instance, created, **kwargs):
|
|||||||
message = 'Jäsenhakemuksesi on hyväksytty!!!\r\n'
|
message = 'Jäsenhakemuksesi on hyväksytty!!!\r\n'
|
||||||
send_mail_wrapper(subject, message, instance.email)
|
send_mail_wrapper(subject, message, instance.email)
|
||||||
|
|
||||||
|
# Can be used to retrieve single member information via REST API
|
||||||
|
class MemberDetail(generics.RetrieveAPIView):
|
||||||
|
queryset = Member.objects.all()
|
||||||
|
serializer_class = MemberSerializer
|
||||||
|
permission_classes = (permissions.IsAdminUser, )
|
||||||
|
throttle_classes = (UserRateThrottle, AnonRateThrottle, )
|
||||||
|
|||||||
@@ -137,6 +137,7 @@ REST_FRAMEWORK = {
|
|||||||
'DEFAULT_PERMISSION_CLASSES': (
|
'DEFAULT_PERMISSION_CLASSES': (
|
||||||
'rest_framework.permissions.IsAuthenticated',
|
'rest_framework.permissions.IsAuthenticated',
|
||||||
'rest_framework.permissions.DjangoModelPermissions',
|
'rest_framework.permissions.DjangoModelPermissions',
|
||||||
|
'rest_framework.permissions.IsAdminUser',
|
||||||
),
|
),
|
||||||
'DEFAULT_THROTTLE_CLASSES': (
|
'DEFAULT_THROTTLE_CLASSES': (
|
||||||
'members.throttles.BurstRateThrottle',
|
'members.throttles.BurstRateThrottle',
|
||||||
|
|||||||
Reference in New Issue
Block a user