authenction
This commit is contained in:
parent
1a2cc00aab
commit
6ecd93bfb1
|
@ -45,7 +45,7 @@
|
||||||
<view class="weui-article__h2">正确答案是{{tm_current.right}},你的答案是{{tm_current.user_answer}}</view>
|
<view class="weui-article__h2">正确答案是{{tm_current.right}},你的答案是{{tm_current.user_answer}}</view>
|
||||||
<view class="weui-article__title">
|
<view class="weui-article__title">
|
||||||
<span style="color:blue">解析: </span>
|
<span style="color:blue">解析: </span>
|
||||||
<span wx:if="{{tm_current.resoluation != null}}">{{tm_current.resoluation}}</span>
|
<span wx:if="{{tm_current.resolution != null}}">{{tm_current.resolution}}</span>
|
||||||
<span wx:else>无</span>
|
<span wx:else>无</span>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
<view class="weui-article__h2">正确答案是{{currentTm.right}},你的答案是{{currentTm.user_answer}}</view>
|
<view class="weui-article__h2">正确答案是{{currentTm.right}},你的答案是{{currentTm.user_answer}}</view>
|
||||||
<view class="weui-article__title">
|
<view class="weui-article__title">
|
||||||
<span style="color:blue">解析: </span>
|
<span style="color:blue">解析: </span>
|
||||||
<span wx:if="{{currentTm.resoluation != null}}">{{currentTm.resoluation}}</span>
|
<span wx:if="{{currentTm.resolution != null}}">{{currentTm.resolution}}</span>
|
||||||
<span wx:else>无</span>
|
<span wx:else>无</span>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
<view class="weui-article__h2">正确答案是{{tm_current.right}},你的答案是{{tm_current.user_answer}}</view>
|
<view class="weui-article__h2">正确答案是{{tm_current.right}},你的答案是{{tm_current.user_answer}}</view>
|
||||||
<view class="weui-article__title">
|
<view class="weui-article__title">
|
||||||
<span style="color:blue">解析: </span>
|
<span style="color:blue">解析: </span>
|
||||||
<span wx:if="{{tm_current.resoluation != null}}">{{tm_current.resoluation}}</span>
|
<span wx:if="{{tm_current.resolution != null}}">{{tm_current.resolution}}</span>
|
||||||
<span wx:else>无</span>
|
<span wx:else>无</span>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
<view class="weui-article__h2">正确答案是{{tm_current.question.right}},你的答案是{{tm_current.user_answer}}</view>
|
<view class="weui-article__h2">正确答案是{{tm_current.question.right}},你的答案是{{tm_current.user_answer}}</view>
|
||||||
<view class="weui-article__title">
|
<view class="weui-article__title">
|
||||||
<span style="color:blue">解析: </span>
|
<span style="color:blue">解析: </span>
|
||||||
<span wx:if="{{tm_current.question.resoluation != null}}">{{tm_current.question.resoluation}}</span>
|
<span wx:if="{{tm_current.question.resolution != null}}">{{tm_current.question.resolution}}</span>
|
||||||
<span wx:else>无</span>
|
<span wx:else>无</span>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
from rest_framework.permissions import IsAuthenticated
|
||||||
|
|
||||||
|
|
||||||
|
class IsConsumerAuthenticated(IsAuthenticated):
|
||||||
|
def has_permission(self, request, view):
|
||||||
|
return bool(request.user)
|
|
@ -9,6 +9,7 @@ from rest_framework import status
|
||||||
from django_filters.rest_framework import DjangoFilterBackend
|
from django_filters.rest_framework import DjangoFilterBackend
|
||||||
from openpyxl import Workbook, load_workbook
|
from openpyxl import Workbook, load_workbook
|
||||||
import requests
|
import requests
|
||||||
|
from rest_framework_jwt.authentication import JSONWebTokenAuthentication
|
||||||
from rest_framework_jwt.serializers import jwt_encode_handler
|
from rest_framework_jwt.serializers import jwt_encode_handler
|
||||||
import json
|
import json
|
||||||
import random
|
import random
|
||||||
|
@ -22,6 +23,7 @@ import warnings
|
||||||
from utils.custom import CommonPagination
|
from utils.custom import CommonPagination
|
||||||
from rbac.permission import RbacPermission
|
from rbac.permission import RbacPermission
|
||||||
from crm.authentication import ConsumerTokenAuthentication
|
from crm.authentication import ConsumerTokenAuthentication
|
||||||
|
from crm.permission import IsConsumerAuthenticated
|
||||||
from .models import Company, Consumer, PaySubject, SendCode
|
from .models import Company, Consumer, PaySubject, SendCode
|
||||||
from .serializers import CompanySerializer, ConsumerSerializer
|
from .serializers import CompanySerializer, ConsumerSerializer
|
||||||
from question.serializers import QuestionSerializer
|
from question.serializers import QuestionSerializer
|
||||||
|
@ -129,7 +131,7 @@ class ConsumerViewSet(ModelViewSet):
|
||||||
PaySubject.objects.get_or_create(consumer = instance, subject__id=i, defaults={'consumer':instance,'subject':Questioncat.objects.get(id=i)})
|
PaySubject.objects.get_or_create(consumer = instance, subject__id=i, defaults={'consumer':instance,'subject':Questioncat.objects.get(id=i)})
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
@action(methods=['get'], detail=False, permission_classes=[], authentication_classes=[ConsumerTokenAuthentication],
|
@action(methods=['get'], detail=False, permission_classes=[IsConsumerAuthenticated], authentication_classes=[ConsumerTokenAuthentication],
|
||||||
url_path='subjectpaid', url_name='subject_paid')
|
url_path='subjectpaid', url_name='subject_paid')
|
||||||
def has_paid(self, request):
|
def has_paid(self, request):
|
||||||
"""
|
"""
|
||||||
|
@ -156,7 +158,7 @@ class ConsumerViewSet(ModelViewSet):
|
||||||
else:
|
else:
|
||||||
return Response({'error':result['data']})
|
return Response({'error':result['data']})
|
||||||
|
|
||||||
@action(methods=['post','delete','get'], detail=False, permission_classes=[], authentication_classes=[ConsumerTokenAuthentication],
|
@action(methods=['post','delete','get'], detail=False, permission_classes=[IsConsumerAuthenticated], authentication_classes=[ConsumerTokenAuthentication],
|
||||||
url_path='collects', url_name='create_collects')
|
url_path='collects', url_name='create_collects')
|
||||||
def collects(self, request):
|
def collects(self, request):
|
||||||
'''
|
'''
|
||||||
|
|
|
@ -141,6 +141,7 @@ STATIC_ROOT = os.path.join(BASE_DIR,'static')
|
||||||
REST_FRAMEWORK = {
|
REST_FRAMEWORK = {
|
||||||
'DEFAULT_AUTHENTICATION_CLASSES': [
|
'DEFAULT_AUTHENTICATION_CLASSES': [
|
||||||
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
|
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
|
||||||
|
'rest_framework.authentication.BasicAuthentication',
|
||||||
],
|
],
|
||||||
'DEFAULT_PERMISSION_CLASSES':[
|
'DEFAULT_PERMISSION_CLASSES':[
|
||||||
'rest_framework.permissions.IsAuthenticated',
|
'rest_framework.permissions.IsAuthenticated',
|
||||||
|
@ -150,6 +151,8 @@ REST_FRAMEWORK = {
|
||||||
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'],
|
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'],
|
||||||
# 指定用于支持coreapi的Schema
|
# 指定用于支持coreapi的Schema
|
||||||
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
|
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
|
||||||
|
'UNAUTHENTICATED_USER': None,
|
||||||
|
'UNAUTHENTICATED_TOKEN': None,
|
||||||
}
|
}
|
||||||
|
|
||||||
JWT_AUTH = {
|
JWT_AUTH = {
|
||||||
|
|
|
@ -21,55 +21,55 @@ class CommonPagination(PageNumberPagination):
|
||||||
"""
|
"""
|
||||||
page_size = 10
|
page_size = 10
|
||||||
page_size_query_param = 'limit'
|
page_size_query_param = 'limit'
|
||||||
def paginate_queryset(self, queryset, request, view=None):
|
# def paginate_queryset(self, queryset, request, view=None):
|
||||||
"""
|
# """
|
||||||
重写该方法,确保post请求也可分页
|
# 重写该方法,确保post请求也可分页
|
||||||
"""
|
# """
|
||||||
page_size = self.get_page_size(request)
|
# page_size = self.get_page_size(request)
|
||||||
if not page_size:
|
# if not page_size:
|
||||||
return None
|
# return None
|
||||||
|
|
||||||
paginator = self.django_paginator_class(queryset, page_size)
|
# paginator = self.django_paginator_class(queryset, page_size)
|
||||||
if self.page_query_param in request.query_params:
|
# if self.page_query_param in request.query_params:
|
||||||
page_number = request.query_params.get(self.page_query_param)
|
# page_number = request.query_params.get(self.page_query_param)
|
||||||
elif self.page_query_param in request.data:
|
# elif self.page_query_param in request.data:
|
||||||
page_number = request.data.get(self.page_query_param)
|
# page_number = request.data.get(self.page_query_param)
|
||||||
else:
|
# else:
|
||||||
page_number = 1
|
# page_number = 1
|
||||||
if page_number in self.last_page_strings:
|
# if page_number in self.last_page_strings:
|
||||||
page_number = paginator.num_pages
|
# page_number = paginator.num_pages
|
||||||
|
|
||||||
try:
|
# try:
|
||||||
self.page = paginator.page(page_number)
|
# self.page = paginator.page(page_number)
|
||||||
except InvalidPage as exc:
|
# except InvalidPage as exc:
|
||||||
msg = self.invalid_page_message.format(
|
# msg = self.invalid_page_message.format(
|
||||||
page_number=page_number, message=str(exc)
|
# page_number=page_number, message=str(exc)
|
||||||
)
|
# )
|
||||||
raise NotFound(msg)
|
# raise NotFound(msg)
|
||||||
|
|
||||||
if paginator.num_pages > 1 and self.template is not None:
|
# if paginator.num_pages > 1 and self.template is not None:
|
||||||
# The browsable API should display pagination controls.
|
# # The browsable API should display pagination controls.
|
||||||
self.display_page_controls = True
|
# self.display_page_controls = True
|
||||||
|
|
||||||
self.request = request
|
# self.request = request
|
||||||
return list(self.page)
|
# return list(self.page)
|
||||||
|
|
||||||
def get_page_size(self, request):
|
# def get_page_size(self, request):
|
||||||
if self.page_size_query_param:
|
# if self.page_size_query_param:
|
||||||
try:
|
# try:
|
||||||
if self.page_size_query_param in request.query_params:
|
# if self.page_size_query_param in request.query_params:
|
||||||
page_size = request.query_params.get(self.page_size_query_param)
|
# page_size = request.query_params.get(self.page_size_query_param)
|
||||||
else:
|
# else:
|
||||||
page_size = request.data.get(self.page_size_query_param)
|
# page_size = request.data.get(self.page_size_query_param)
|
||||||
return _positive_int(
|
# return _positive_int(
|
||||||
page_size,
|
# page_size,
|
||||||
strict=True,
|
# strict=True,
|
||||||
cutoff=self.max_page_size
|
# cutoff=self.max_page_size
|
||||||
)
|
# )
|
||||||
except (KeyError, ValueError):
|
# except (KeyError, ValueError):
|
||||||
pass
|
# pass
|
||||||
|
|
||||||
return self.page_size
|
# return self.page_size
|
||||||
|
|
||||||
|
|
||||||
class TreeSerializer(serializers.Serializer):
|
class TreeSerializer(serializers.Serializer):
|
||||||
|
|
Loading…
Reference in New Issue