You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

73 lines
2.8 KiB

import base64
import json
import requests
import struct
import time
from django.contrib.auth.models import User
from django.http import HttpResponse
from django.shortcuts import get_object_or_404, get_list_or_404
from rest_framework import mixins, permissions, status, viewsets
from rest_framework.authtoken.models import Token
from rest_framework.decorators import api_view, permission_classes
from rest_framework.response import Response
from . import models, serializers
from authserver.settings import PROTOSPACE_LOGIN_PAGE, FIRMWARE_VERSION_MAGIC
class IsLockoutAdmin(permissions.BasePermission):
def has_permission(self, request, view):
try:
return request.user.profile.lockout_admin
except AttributeError:
return False
class CategoryViewSet(viewsets.ModelViewSet):
queryset = models.Category.objects.all().order_by('id')
serializer_class = serializers.CategorySerializer
permission_classes = (IsLockoutAdmin,)
lookup_field='slug'
class CourseViewSet(viewsets.ModelViewSet):
queryset = models.Course.objects.all().order_by('id')
serializer_class = serializers.CourseSerializer
permission_classes = (IsLockoutAdmin,)
lookup_field='slug'
class ToolViewSet(viewsets.ModelViewSet):
queryset = models.Tool.objects.all().order_by('id')
serializer_class = serializers.ToolSerializer
permission_classes = (IsLockoutAdmin,)
lookup_field='slug'
class ToolDataViewSet(viewsets.ViewSet):
def list(self, request):
category_objects = models.Category.objects.all().order_by('id')
categories = serializers.CategoryToolSerializer(category_objects, many=True, context={'request': request})
course_objects = models.Course.objects.all().order_by('id')
courses = serializers.CourseSerializer(course_objects, many=True, context={'request': request})
return Response({'categories': categories.data, 'courses': courses.data})
class ProfileViewSet(
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet):
queryset = models.Profile.objects.all().order_by('-user__date_joined')
serializer_class = serializers.ProfileSerializer
permission_classes = (IsLockoutAdmin,)
class UserViewSet(viewsets.ReadOnlyModelViewSet):
serializer_class = serializers.UserSerializer
permission_classes = (permissions.IsAuthenticated,)
def get_queryset(self):
return User.objects.filter(username=self.request.user)
class FirmwareViewSet(viewsets.ModelViewSet):
queryset = models.Firmware.objects.all().order_by('-version')
serializer_class = serializers.FirmwareSerializer
permission_classes = (IsLockoutAdmin,)
lookup_field='version'
http_method_names = ['get', 'post', 'head', 'delete', 'options']