Skip to content
Snippets Groups Projects
Unverified Commit af776672 authored by Tomasz Knapik's avatar Tomasz Knapik
Browse files

Merge remote-tracking branch 'origin/feature/drf-integration' into sprint-1-winter-2019

parents be8346f8 b0f42d9d
No related branches found
No related tags found
No related merge requests found
from rest_framework import generics
from rest_framework import permissions
from django_filters.rest_framework import DjangoFilterBackend
from .models import ApplicationSubmission
from .serializers import SubmissionListSerializer, SubmissionDetailSerializer
from .permissions import IsApplyStaffUser
class SubmissionList(generics.ListAPIView):
queryset = ApplicationSubmission.objects.all()
serializer_class = SubmissionListSerializer
permission_classes = (
permissions.IsAuthenticated, IsApplyStaffUser,
)
filter_backends = (DjangoFilterBackend,)
filter_fields = ('round', 'status')
class SubmissionDetail(generics.RetrieveAPIView):
queryset = ApplicationSubmission.objects.all()
serializer_class = SubmissionDetailSerializer
permission_classes = (
permissions.IsAuthenticated, IsApplyStaffUser,
)
from rest_framework import permissions
class IsApplyStaffUser(permissions.BasePermission):
"""
Custom permission to only allow OTF Staff or higher
"""
def has_permission(self, request, view):
return request.user.is_apply_staff
def has_object_permission(self, request, view, obj):
return request.user.is_apply_staff
from rest_framework import serializers
from .models import ApplicationSubmission
class SubmissionListSerializer(serializers.ModelSerializer):
class Meta:
model = ApplicationSubmission
fields = ('id',)
class SubmissionDetailSerializer(serializers.ModelSerializer):
class Meta:
model = ApplicationSubmission
fields = ('id', 'title',)
......@@ -10,6 +10,7 @@ from .views import (
SubmissionSealedView,
SubmissionSearchView,
)
from .api_views import SubmissionList, SubmissionDetail
revision_urls = ([
......@@ -35,8 +36,14 @@ submission_urls = ([
path('rounds/<int:pk>/', SubmissionsByRound.as_view(), name="by_round"),
], 'submissions')
submission_api_urls = ([
path('', SubmissionList.as_view(), name='list'),
path('<int:pk>/', SubmissionDetail.as_view(), name='detail'),
], 'submissions-api')
urlpatterns = [
path('submissions/', include(submission_urls)),
path('api/submissions/', include(submission_api_urls)),
path('search/', SubmissionSearchView.as_view(), name="search"),
]
......@@ -116,6 +116,7 @@ INSTALLED_APPS = [
'django_bleach',
'django_fsm',
'django_pwned_passwords',
'rest_framework',
'hijack',
'compat',
......@@ -605,3 +606,16 @@ WEBPACK_LOADER = {
COUNTRIES_OVERRIDE = {
'KV': 'Kosovo',
}
# Rest Framework configuration
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
}
django~=2.0.0
djangorestframework==3.7.4
djangorestframework==3.9.0
django-fsm==2.6.0
wagtail~=2.2.0
psycopg2==2.7.3.1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment