diff --git a/dvadmin-backend/apps/vadmin/system/filters.py b/dvadmin-backend/apps/vadmin/system/filters.py index 65aa9cb..6c85b54 100644 --- a/dvadmin-backend/apps/vadmin/system/filters.py +++ b/dvadmin-backend/apps/vadmin/system/filters.py @@ -1,5 +1,6 @@ import django_filters +from .models import LoginInfor from ..system.models import DictDetails, DictData, ConfigSettings, MessagePush, SaveFile @@ -48,7 +49,18 @@ class MessagePushFilter(django_filters.rest_framework.FilterSet): """ 消息通知 简单过滤器 """ + # is_read = django_filters.CharFilter(field_name='messagepushuser_message_push__is_read') class Meta: model = MessagePush fields = '__all__' + + +class LoginInforFilter(django_filters.rest_framework.FilterSet): + """ + 登录日志 简单过滤器 + """ + + class Meta: + model = LoginInfor + fields = '__all__' diff --git a/dvadmin-backend/apps/vadmin/system/serializers.py b/dvadmin-backend/apps/vadmin/system/serializers.py index 6ff2a42..38ac18a 100644 --- a/dvadmin-backend/apps/vadmin/system/serializers.py +++ b/dvadmin-backend/apps/vadmin/system/serializers.py @@ -1,5 +1,6 @@ from rest_framework import serializers +from .models import LoginInfor from ..op_drf.serializers import CustomModelSerializer from ..system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush, MessagePushUser @@ -216,3 +217,16 @@ class MessagePushUserSerializer(CustomModelSerializer): def save(self, **kwargs): return super().save(**kwargs) + +# ================================================= # +# ************** 登录日志 序列化器 ************** # +# ================================================= # + +class LoginInforSerializer(CustomModelSerializer): + """ + 参数设置 简单序列化器 + """ + + class Meta: + model = LoginInfor + fields = "__all__" diff --git a/dvadmin-backend/apps/vadmin/system/urls.py b/dvadmin-backend/apps/vadmin/system/urls.py index cd18ec7..92ec250 100644 --- a/dvadmin-backend/apps/vadmin/system/urls.py +++ b/dvadmin-backend/apps/vadmin/system/urls.py @@ -2,7 +2,7 @@ from django.urls import re_path from rest_framework.routers import DefaultRouter from ..system.views import DictDataModelViewSet, DictDetailsModelViewSet, \ - ConfigSettingsModelViewSet, SaveFileModelViewSet, MessagePushModelViewSet + ConfigSettingsModelViewSet, SaveFileModelViewSet, MessagePushModelViewSet, LoginInforModelViewSet router = DefaultRouter() router.register(r'dict/type', DictDataModelViewSet) @@ -10,6 +10,7 @@ router.register(r'dict/data', DictDetailsModelViewSet) router.register(r'config', ConfigSettingsModelViewSet) router.register(r'savefile', SaveFileModelViewSet) router.register(r'message', MessagePushModelViewSet) +router.register(r'logininfor', LoginInforModelViewSet) urlpatterns = [ re_path('dict/get/type/(?P.*)/', DictDetailsModelViewSet.as_view({'get': 'dict_details_list'})), re_path('config/configKey/(?P.*)/', ConfigSettingsModelViewSet.as_view({'get': 'get_config_key'})), @@ -24,10 +25,10 @@ urlpatterns = [ # 用户获取个人通知列表 re_path('message/receive/', MessagePushModelViewSet.as_view({"get": "get_received_messages"})), # 消息通知导出 - re_path('message/export/', MessagePushModelViewSet.as_view({'get': 'export',})), + re_path('message/export/', MessagePushModelViewSet.as_view({'get': 'export', })), # 用户个人消息列表 - re_path('message/user_messages/', MessagePushModelViewSet.as_view({'get': 'get_user_messages',})), + re_path('message/user_messages/', MessagePushModelViewSet.as_view({'get': 'get_user_messages', })), # 改为已读 - re_path('message/is_read/(?P.*)/', MessagePushModelViewSet.as_view({'put': 'update_is_read',})), + re_path('message/is_read/(?P.*)/', MessagePushModelViewSet.as_view({'put': 'update_is_read', })), ] urlpatterns += router.urls diff --git a/dvadmin-backend/apps/vadmin/system/views.py b/dvadmin-backend/apps/vadmin/system/views.py index ef310a2..ac63a01 100644 --- a/dvadmin-backend/apps/vadmin/system/views.py +++ b/dvadmin-backend/apps/vadmin/system/views.py @@ -1,17 +1,18 @@ from django.db.models import Q from rest_framework.request import Request +from .models import LoginInfor from ..op_drf.filters import DataLevelPermissionsFilter from ..op_drf.viewsets import CustomModelViewSet from ..system.filters import DictDetailsFilter, DictDataFilter, ConfigSettingsFilter, MessagePushFilter, \ - SaveFileFilter + SaveFileFilter, LoginInforFilter from ..system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush from ..system.models import MessagePushUser from ..system.serializers import DictDataSerializer, DictDataCreateUpdateSerializer, DictDetailsSerializer, \ DictDetailsCreateUpdateSerializer, DictDetailsListSerializer, ConfigSettingsSerializer, \ ConfigSettingsCreateUpdateSerializer, SaveFileSerializer, SaveFileCreateUpdateSerializer, \ ExportConfigSettingsSerializer, ExportDictDataSerializer, ExportDictDetailsSerializer, \ - MessagePushSerializer, MessagePushCreateUpdateSerializer, ExportMessagePushSerializer + MessagePushSerializer, MessagePushCreateUpdateSerializer, ExportMessagePushSerializer, LoginInforSerializer from ..utils.export_excel import export_excel_save_model from ..utils.response import SuccessResponse @@ -212,3 +213,14 @@ class MessagePushModelViewSet(CustomModelViewSet): field_data = ['消息序号', '标题', '内容', '消息类型', '是否审核', '消息状态', '通知接收消息用户', '创建者', '修改者', '修改时间', '创建时间'] data = ExportMessagePushSerializer(MessagePush.objects.all(), many=True).data return SuccessResponse(export_excel_save_model(request, field_data, data, '导出岗位数据.xls')) + + +class LoginInforModelViewSet(CustomModelViewSet): + """ + 文件管理 模型的CRUD视图 + """ + queryset = LoginInfor.objects.all() + serializer_class = LoginInforSerializer + filter_class = LoginInforFilter + extra_filter_backends = [DataLevelPermissionsFilter] + ordering = 'create_datetime' # 默认排序