Added django rest framework to members
This commit is contained in:
@@ -0,0 +1,38 @@
|
|||||||
|
from rest_framework import serializers
|
||||||
|
from django.utils import timezone
|
||||||
|
from datetime import datetime
|
||||||
|
from members.models import Member
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
|
|
||||||
|
class MemberSerializer(serializers.Serializer):
|
||||||
|
id = serializers.IntegerField(read_only=True)
|
||||||
|
first_name = serializers.CharField(required=True, max_length=127)
|
||||||
|
last_name = serializers.CharField(required=True, max_length=127)
|
||||||
|
email = serializers.EmailField(min_length=None, max_length=None, required=True)
|
||||||
|
POR = serializers.CharField(max_length=255)
|
||||||
|
AYY = serializers.BooleanField(default=False)
|
||||||
|
jas = serializers.BooleanField(default=False)
|
||||||
|
created = serializers.DateTimeField(default=timezone.now)
|
||||||
|
paid = serializers.DateTimeField(default=datetime.fromtimestamp(0))
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
'''
|
||||||
|
Create and return a new Member instance, given the validated data.
|
||||||
|
'''
|
||||||
|
return Member.objects.create(**validated_data)
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
'''
|
||||||
|
Update and return an existing Member instance given the validated data.
|
||||||
|
'''
|
||||||
|
instance.first_name = validated_data.get('first_name', instance.first_name)
|
||||||
|
instance.last_name = validated_data.get('last_name', instance.last_name)
|
||||||
|
instance.email = validated_data.get('email', instance.email)
|
||||||
|
instance.POR = validated_data.get('POR', instance.POR)
|
||||||
|
instance.AYY = validated_data.get('AYY', instance.AYY)
|
||||||
|
instance.jas = validated_data.get('jas', instance.jas)
|
||||||
|
instance.created = validated_data.get('created', instance.created)
|
||||||
|
instance.paid = validated_data.get('paid', instance.paid)
|
||||||
|
instance.save()
|
||||||
|
return instance
|
||||||
@@ -10,12 +10,32 @@ from django.core.mail import send_mail
|
|||||||
import requests
|
import requests
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
import logging
|
import logging
|
||||||
|
'''Rest API'''
|
||||||
|
from members.serializers import MemberSerializer
|
||||||
|
from rest_framework import generics
|
||||||
|
from rest_framework import generics, status, authentication, exceptions, permissions
|
||||||
|
from rest_framework.decorators import api_view, permission_classes
|
||||||
|
from rest_framework.permissions import IsAuthenticated
|
||||||
|
|
||||||
# Logger function, you can use the same idea when implementing other loggers to other apps
|
# Logger function, you can use the same idea when implementing other loggers to other apps
|
||||||
memberlogger = logging.getLogger(__name__)
|
memberlogger = logging.getLogger(__name__)
|
||||||
logging.basicConfig(format='[%(levelname)s]%(asctime)s %(message)s', level=settings.LOGGERLEVEL, filename=settings.LOGPATH)
|
logging.basicConfig(format='[%(levelname)s]%(asctime)s %(message)s', level=settings.LOGGERLEVEL, filename=settings.LOGPATH)
|
||||||
|
|
||||||
|
|
||||||
|
#API views
|
||||||
|
########################################
|
||||||
|
class MembersList(generics.ListCreateAPIView):
|
||||||
|
queryset = Member.objects.all()
|
||||||
|
serializer_class = MemberSerializer
|
||||||
|
permission_classes = (permissions.IsAuthenticated, )
|
||||||
|
|
||||||
|
|
||||||
|
class MemberDetails(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
queryset = Member.objects.all()
|
||||||
|
serializer_class = MemberSerializer
|
||||||
|
permission_classes = (permissions.IsAuthenticated, )
|
||||||
|
|
||||||
|
########################################
|
||||||
# function to validate reCaptcha
|
# function to validate reCaptcha
|
||||||
def validate_recaptcha(response):
|
def validate_recaptcha(response):
|
||||||
values = {
|
values = {
|
||||||
|
|||||||
@@ -16,3 +16,4 @@ Pillow==3.3.1
|
|||||||
requests==2.11.1
|
requests==2.11.1
|
||||||
django-nocaptcha-recaptcha==0.0.19
|
django-nocaptcha-recaptcha==0.0.19
|
||||||
django-cors-headers==2.0.1
|
django-cors-headers==2.0.1
|
||||||
|
djangorestframework==3.5.3
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ INSTALLED_APPS = [
|
|||||||
'webapp',
|
'webapp',
|
||||||
'members',
|
'members',
|
||||||
'infoscreen',
|
'infoscreen',
|
||||||
|
'rest_framework',
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES = [
|
MIDDLEWARE_CLASSES = [
|
||||||
@@ -58,7 +59,7 @@ MIDDLEWARE_CLASSES = [
|
|||||||
'django.contrib.messages.middleware.MessageMiddleware',
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
]
|
]
|
||||||
CORS_ORIGIN_ALLOW_ALL = True
|
CORS_ORIGIN_ALLOW_ALL = True
|
||||||
|
|
||||||
ROOT_URLCONF = 'sikweb.urls'
|
ROOT_URLCONF = 'sikweb.urls'
|
||||||
|
|
||||||
@@ -118,6 +119,21 @@ AUTH_PASSWORD_VALIDATORS = [
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
REST_FRAMEWORK = {
|
||||||
|
'DEFAULT_PERMISSION_CLASSES': (
|
||||||
|
'rest_framework.permissions.IsAuthenticated',
|
||||||
|
'rest_framework.permissions.DjangoModelPermissions',
|
||||||
|
),
|
||||||
|
'DEFAULT_THROTTLE_CLASSES': (
|
||||||
|
'members.throttles.BurstRateThrottle',
|
||||||
|
'members.throttles.SustainedRateThrottle'
|
||||||
|
),
|
||||||
|
'DEFAULT_THROTTLE_RATES': {
|
||||||
|
'burst': '60/min',
|
||||||
|
'sustained': '1000/day'
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
# Email settings (tested working with gmail)
|
# Email settings (tested working with gmail)
|
||||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||||
EMAIL_USE_TLS = True
|
EMAIL_USE_TLS = True
|
||||||
|
|||||||
@@ -42,6 +42,9 @@ from members.views import new_member_request
|
|||||||
from members.views import member_requests
|
from members.views import member_requests
|
||||||
from members.views import export_csv as mem_csv_export
|
from members.views import export_csv as mem_csv_export
|
||||||
from members.views import tommy_blooper
|
from members.views import tommy_blooper
|
||||||
|
# members API
|
||||||
|
from members.views import MembersList as memsListAPI
|
||||||
|
from members.views import MemberDetails as memDetailAPI
|
||||||
#infoscreen
|
#infoscreen
|
||||||
from infoscreen.views import index as infoindex
|
from infoscreen.views import index as infoindex
|
||||||
from infoscreen.views import default as infodefault
|
from infoscreen.views import default as infodefault
|
||||||
@@ -97,6 +100,8 @@ urlpatterns = [
|
|||||||
url(r'^members/api/request/(?P<idx>\d+)$', handle_mem_request),
|
url(r'^members/api/request/(?P<idx>\d+)$', handle_mem_request),
|
||||||
url(r'^members/api/getCSV$', mem_csv_export),
|
url(r'^members/api/getCSV$', mem_csv_export),
|
||||||
url(r'^members/tommy$', tommy_blooper),
|
url(r'^members/tommy$', tommy_blooper),
|
||||||
|
url(r'^members/rest/api/members$', memsListAPI.as_view()),
|
||||||
|
url(r'^members/rest/api/members/(?P<pk>\d+)$', memDetailAPI.as_view()),
|
||||||
#infoscreen
|
#infoscreen
|
||||||
url(r'^infoscreen/$', infodefault),
|
url(r'^infoscreen/$', infodefault),
|
||||||
url(r'^infoscreen/(?P<idx>\d+)$', infoindex),
|
url(r'^infoscreen/(?P<idx>\d+)$', infoindex),
|
||||||
|
|||||||
Reference in New Issue
Block a user