import logging from django.db.models import Count from django.shortcuts import render from django.views.decorators.http import require_http_methods # Create your views here. from rest_framework import viewsets from rest_framework.response import Response from app.models import TP from app.serializers import SerialMyModel, SerialFilter from app.pagination import MyPageNumberPagination from user.models import UserProfile from django.contrib.auth import authenticate, login, logout from .utils import generate_token, decode_token_exp_time logger = logging.getLogger('mylogger') class ModelQuery(viewsets.ModelViewSet): # 查询类 queryset = TP.objects.all().order_by("-uid") # 按照uid倒序 # 序列化类 serializer_class = SerialMyModel # 分页类 pagination_class = MyPageNumberPagination # 条件筛选 filterset_class = SerialFilter def query_event(self, request, *args, **kwargs): res = TP.objects.values('event_type').annotate(count=Count('event_type')).order_by('-count') result = list(res) data = dict() for index, item in enumerate(result, 1): data[index] = item.get('event_type') response = { 'success': True, 'msg': '查询成功', 'data': data } return Response(response) class RegisterLoginViewSet(viewsets.ModelViewSet): def tp_register(self, request, *args, **kwargs): """注册 POST""" # 判断用户是否为管理员 # user = request.user # if not user.is_superuser: # return Response({'msg': '您不是管理员,无权限添加成员'}) data = request.data username = data.get('username') password = data.get('password') try: if UserProfile.objects.filter(username=username).first(): return Response({'msg': '该用户名已存在,请换一个'}) UserProfile.objects.create_user(username=username, password=password) return Response({'msg': '注册成功'}) except Exception as e: logger.info(e) response = { "msg": f'注册失败, 原因:{e}' } return Response(response) class LoginView(viewsets.ModelViewSet): def tp_login(self, request, *args, **kwargs): """登录 POST""" data = request.data username = data.get('username') password = data.get('password') login_user = authenticate(username=username, password=password) if login_user and login_user.is_active: # 生成token token = generate_token(login_user) response = { 'success': True, 'msg': '登录成功', 'data': { 'username': login_user.username, 'roles': ['admin'] if login_user.is_superuser else ['common'], 'accessToken': token, 'expires': decode_token_exp_time(token) } } return Response(response) else: response = { 'success': False, 'msg': '登录失败', 'data': { 'username': None, 'roles': [], 'accessToken': None, 'expires': None } } return Response(response) def tp_logout(self, request, *args, **kwargs): """登出 GET""" pass