重构(dvadmin):所有包引入都加apps.

pull/36/head
李强 2021-07-03 15:43:54 +08:00
parent a85e185d22
commit 959faf6ec4
63 changed files with 185 additions and 248 deletions

View File

@ -22,7 +22,7 @@ from django.urls import re_path, include
from django.views.static import serve
from rest_framework.views import APIView
from apps.vadmin.utils.response import SuccessResponse
from apps.vadmin.op_drf.response import SuccessResponse
class CaptchaRefresh(APIView):

View File

@ -2,6 +2,6 @@ from django.apps import AppConfig
class DpCmdbConfig(AppConfig):
name = 'vadmin.celery'
name = 'apps.vadmin.celery'

View File

@ -1,8 +1,8 @@
from django_celery_beat.models import IntervalSchedule, CrontabSchedule, PeriodicTask
from rest_framework import serializers
from ..op_drf.serializers import CustomModelSerializer
from ..utils.exceptions import APIException
from apps.vadmin.op_drf.serializers import CustomModelSerializer
from apps.vadmin.utils.exceptions import APIException
class IntervalScheduleSerializer(CustomModelSerializer):

View File

@ -2,13 +2,11 @@ from django_celery_beat.admin import TaskSelectWidget
from django_celery_beat.models import IntervalSchedule, CrontabSchedule, PeriodicTask
from rest_framework.views import APIView
from ..celery.filters import IntervalScheduleFilter, CrontabScheduleFilter, PeriodicTaskFilter
from ..celery.serializers import IntervalScheduleSerializer, CrontabScheduleSerializer, PeriodicTaskSerializer
from ..op_drf.views import CustomAPIView
from ..op_drf.viewsets import CustomModelViewSet
from ..system.models import DictData
from ..system.serializers import DictDataSerializer
from ..utils.response import SuccessResponse
from apps.vadmin.celery.filters import IntervalScheduleFilter, CrontabScheduleFilter, PeriodicTaskFilter
from apps.vadmin.celery.serializers import IntervalScheduleSerializer, CrontabScheduleSerializer, PeriodicTaskSerializer
from apps.vadmin.op_drf.views import CustomAPIView
from apps.vadmin.op_drf.viewsets import CustomModelViewSet
from apps.vadmin.op_drf.response import SuccessResponse
class IntervalScheduleModelViewSet(CustomModelViewSet):

View File

@ -2,5 +2,5 @@ from django.apps import AppConfig
class MonitorConfig(AppConfig):
name = 'vadmin.monitor'
name = 'apps.vadmin.monitor'
verbose_name = "系统监控"

View File

@ -1,6 +1,6 @@
import django_filters
from .models import Server, Monitor
from apps.vadmin.monitor.models import Server, Monitor
class ServerFilter(django_filters.rest_framework.FilterSet):

View File

@ -1,3 +1,3 @@
from ..models.monitor import Monitor
from ..models.server import Server
from ..models.sys_files import SysFiles
from apps.vadmin.monitor.models.monitor import Monitor
from apps.vadmin.monitor.models.server import Server
from apps.vadmin.monitor.models.sys_files import SysFiles

View File

@ -1,6 +1,6 @@
from django.db.models import CharField, ForeignKey, CASCADE
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class Monitor(CoreModel):

View File

@ -1,6 +1,6 @@
from django.db.models import CharField, ForeignKey, CASCADE
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class SysFiles(CoreModel):

View File

@ -1,5 +1,5 @@
from .models import Server, Monitor
from ..op_drf.serializers import CustomModelSerializer
from apps.vadmin.monitor.models import Server, Monitor
from apps.vadmin.op_drf.serializers import CustomModelSerializer
# ================================================= #

View File

@ -5,10 +5,10 @@ import time
import psutil
from ..monitor.models import Server, Monitor, SysFiles
from ..op_drf.response import SuccessResponse
from ..system.models import ConfigSettings
from ..utils.decorators import BaseCeleryApp
from apps.vadmin.monitor.models import Server, Monitor, SysFiles
from apps.vadmin.op_drf.response import SuccessResponse
from apps.vadmin.system.models import ConfigSettings
from apps.vadmin.utils.decorators import BaseCeleryApp
logger = logging.getLogger(__name__)
from platform import platform

View File

@ -1,7 +1,7 @@
from django.urls import re_path
from rest_framework.routers import DefaultRouter
from .views import ServerModelViewSet, MonitorModelViewSet
from apps.vadmin.monitor.views import ServerModelViewSet, MonitorModelViewSet
router = DefaultRouter()
router.register(r'server', ServerModelViewSet)

View File

@ -1,13 +1,13 @@
from django_celery_beat.models import PeriodicTask, IntervalSchedule, CrontabSchedule
from rest_framework.request import Request
from .filters import ServerFilter, MonitorFilter
from .models import Server, Monitor, SysFiles
from .serializers import ServerSerializer, MonitorSerializer, UpdateServerSerializer
from ..op_drf.response import SuccessResponse, ErrorResponse
from ..op_drf.viewsets import CustomModelViewSet
from ..permission.permissions import CommonPermission
from ..system.models import ConfigSettings
from apps.vadmin.monitor.filters import ServerFilter, MonitorFilter
from apps.vadmin.monitor.models import Server, Monitor, SysFiles
from apps.vadmin.monitor.serializers import ServerSerializer, MonitorSerializer, UpdateServerSerializer
from apps.vadmin.op_drf.response import SuccessResponse, ErrorResponse
from apps.vadmin.op_drf.viewsets import CustomModelViewSet
from apps.vadmin.permission.permissions import CommonPermission
from apps.vadmin.system.models import ConfigSettings
class ServerModelViewSet(CustomModelViewSet):

View File

@ -1,7 +1,7 @@
from django.apps import AppConfig
import logging
from django.apps import AppConfig
logger = logging.getLogger(__name__)

View File

@ -2,7 +2,7 @@ from django.contrib.auth import get_user_model
from django.db import models
from django.db.models import SET_NULL
from ..utils.string_util import uuid_8, uuid_16, uuid_32, uuid_36
from apps.vadmin.utils.string_util import uuid_8, uuid_16, uuid_32, uuid_36
class IdField(models.CharField):

View File

@ -10,7 +10,7 @@ from django.utils import six
from mongoengine.queryset import visitor
from rest_framework.filters import BaseFilterBackend, SearchFilter, OrderingFilter
from ..utils.model_util import get_dept
from apps.vadmin.utils.model_util import get_dept
logger = logging.getLogger(__name__)

View File

@ -4,11 +4,11 @@ from django.http import Http404
from django.shortcuts import get_object_or_404 as _get_object_or_404
from rest_framework.settings import api_settings
from apps.vadmin.utils.jsonpath_util import get_jsonpath, filter_json, search_json
from apps.vadmin.utils.sort_util import sortList
from . import mixins
from .pagination import Pagination, JsonPagination
from .pagination import JsonPagination
from .response import SuccessResponse
from ..utils.jsonpath_util import get_jsonpath, filter_json, search_json
from ..utils.sort_util import sortList
from .views import CustomAPIView

View File

@ -1,5 +1,4 @@
import logging
from django.core.cache import cache
class RedisHandler(logging.StreamHandler):
@ -7,4 +6,3 @@ class RedisHandler(logging.StreamHandler):
def emit(self, record):
msg = self.format(record)
print(msg)

View File

@ -40,7 +40,7 @@ class Command(BaseCommand):
class {name.capitalize()}Config(AppConfig):
name = '{name}'
name = 'apps.{name}'
verbose_name = "{name}App"
"""
with open(os.path.join(app_path, "apps.py"), 'w', encoding='UTF-8') as f:

View File

@ -9,11 +9,11 @@ from django.conf import settings
from django.contrib.auth.models import AnonymousUser
from django.utils.deprecation import MiddlewareMixin
from apps.vadmin.op_drf.response import ErrorJsonResponse
from apps.vadmin.permission.models import Menu
from apps.vadmin.system.models import OperationLog
from ..utils.request_util import get_request_ip, get_request_data, get_request_path, get_browser, get_os, \
from apps.vadmin.utils.request_util import get_request_ip, get_request_data, get_request_path, get_browser, get_os, \
get_login_location, get_request_canonical_path, get_request_user, get_verbose_name
from ..utils.response import ErrorJsonResponse
logger = logging.getLogger(__name__)

View File

@ -5,9 +5,9 @@ from rest_framework import status
from rest_framework.relations import ManyRelatedField, RelatedField, PrimaryKeyRelatedField
from rest_framework.request import Request
from apps.vadmin.utils.export_excel import excel_to_data, export_excel_save_model
from apps.vadmin.utils.request_util import get_verbose_name
from .response import SuccessResponse
from ..utils.export_excel import excel_to_data, export_excel_save_model
from ..utils.request_util import get_verbose_name
class CreateModelMixin(mixins.CreateModelMixin):
@ -317,7 +317,8 @@ class ImportSerializerMixin:
# 示例数据
queryset = self.filter_queryset(self.get_queryset())
return SuccessResponse(
export_excel_save_model(request, self.import_field_data.values(), [], f'导入{get_verbose_name(queryset)}模板.xls'))
export_excel_save_model(request, self.import_field_data.values(), [],
f'导入{get_verbose_name(queryset)}模板.xls'))
updateSupport = request.data.get('updateSupport')
# 从excel中组织对应的数据结构然后使用序列化器保存
data = excel_to_data(request.data.get('file_url'), self.import_field_data)

View File

@ -1,5 +1,4 @@
from collections import OrderedDict
from typing import Any
from rest_framework.pagination import PageNumberPagination, _positive_int
from rest_framework.utils.urls import replace_query_param

View File

@ -1,7 +1,7 @@
"""
常用的Response以及Django的ResponseDRF的Response
"""
from django.http.response import DjangoJSONEncoder
from django.http.response import DjangoJSONEncoder, JsonResponse
from rest_framework.response import Response
@ -26,13 +26,16 @@ class SuccessResponse(Response):
def __init__(self, data=None, msg='success', status=None, template_name=None, headers=None, exception=False,
content_type=None):
std_data = {
self.std_data = {
"code": 200,
"data": data,
"msg": msg,
"status": 'success'
}
super().__init__(std_data, status, template_name, headers, exception, content_type)
super().__init__(self.std_data, status, template_name, headers, exception, content_type)
def __str__(self):
return str(self.std_data)
class ErrorResponse(Response):
@ -43,10 +46,46 @@ class ErrorResponse(Response):
def __init__(self, data=None, msg='error', code=201, status=None, template_name=None, headers=None,
exception=False, content_type=None):
self.std_data = {
"code": code,
"data": data,
"msg": msg,
"status": 'error'
}
super().__init__(self.std_data, status, template_name, headers, exception, content_type)
def __str__(self):
return str(self.std_data)
class SuccessJsonResponse(JsonResponse):
"""
标准JsonResponse, SuccessJsonResponse(data)SuccessJsonResponse(data=data)
(1)仅SuccessResponse无法使用时才能推荐使用SuccessJsonResponse
"""
def __init__(self, data, msg='success', encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs):
std_data = {
"code": 200,
"data": data,
"msg": msg,
"status": 'success'
}
super().__init__(std_data, encoder, safe, json_dumps_params, **kwargs)
class ErrorJsonResponse(JsonResponse):
"""
标准JsonResponse, 仅ErrorResponse无法使用时才能使用ErrorJsonResponse
(1)默认错误码返回2001, 也可以指定其他返回码:ErrorJsonResponse(code=xxx)
"""
def __init__(self, data, msg='error', code=201, encoder=OpDRFJSONEncoder, safe=True, json_dumps_params=None,
**kwargs):
std_data = {
"code": code,
"data": data,
"msg": msg,
"status": 'error'
}
super().__init__(std_data, status, template_name, headers, exception, content_type)
super().__init__(std_data, encoder, safe, json_dumps_params, **kwargs)

View File

@ -3,7 +3,7 @@
"""
from rest_framework.validators import UniqueValidator, qs_exists
from vadmin.utils.exceptions import APIException
from apps.vadmin.utils.exceptions import APIException
class CustomUniqueValidator(UniqueValidator):

View File

@ -6,11 +6,8 @@ from rest_framework.exceptions import APIException as DRFAPIException
from rest_framework.request import Request
from rest_framework.views import APIView
from ..utils import exceptions
from ..utils.model_util import ModelRelateUtils
from .logging.view_logger import CustomerRelationshipViewLogger
from .response import SuccessResponse, ErrorResponse
from .serializers import CustomModelSerializer
from apps.vadmin.utils import exceptions
from .response import ErrorResponse
logger = logging.getLogger(__name__)

View File

@ -11,7 +11,7 @@ from rest_framework.request import Request
from rest_framework.settings import api_settings
from rest_framework.viewsets import ViewSetMixin
from ..utils.exceptions import APIException
from apps.vadmin.utils.exceptions import APIException
from . import mixins
from .filters import MongoSearchFilter, MongoOrderingFilter, AdvancedSearchFilter, MongoAdvancedSearchFilter
from .generics import GenericAPIView

View File

@ -1,8 +1,8 @@
import django_filters
from django.contrib.auth import get_user_model
from ..permission.models import Menu, Dept, Post, Role
from ..utils.model_util import get_dept
from apps.vadmin.permission.models import Menu, Dept, Post, Role
from apps.vadmin.utils.model_util import get_dept
UserProfile = get_user_model()

View File

@ -5,7 +5,7 @@ from django.conf import settings
from django.core.management.base import BaseCommand
from django.db import connection
from ....scripts import getSql
from apps.vadmin.scripts import getSql
logger = logging.getLogger(__name__)

View File

@ -1,5 +1,5 @@
from ..models.dept import Dept
from ..models.menu import Menu
from ..models.post import Post
from ..models.role import Role
from ..models.users import UserProfile
from apps.vadmin.permission.models.dept import Dept
from apps.vadmin.permission.models.menu import Menu
from apps.vadmin.permission.models.post import Post
from apps.vadmin.permission.models.role import Role
from apps.vadmin.permission.models.users import UserProfile

View File

@ -1,7 +1,7 @@
from django.db.models import CASCADE
from django.db.models import CharField, IntegerField, ForeignKey
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class Dept(CoreModel):

View File

@ -1,7 +1,7 @@
from django.core.cache import cache
from django.db.models import IntegerField, ForeignKey, CharField, CASCADE, Q
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class Menu(CoreModel):

View File

@ -1,6 +1,6 @@
from django.db.models import IntegerField, BooleanField, CharField, TextField
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class Post(CoreModel):

View File

@ -1,6 +1,6 @@
from django.db.models import IntegerField, BooleanField, CharField, TextField, ManyToManyField
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class Role(CoreModel):
@ -16,7 +16,7 @@ class Role(CoreModel):
roleSort = IntegerField(verbose_name="角色顺序")
status = CharField(max_length=8, verbose_name="角色状态")
admin = BooleanField(default=False, verbose_name="是否为admin")
dataScope = CharField(max_length=8,default='1', choices=DATASCOPE_CHOICES, verbose_name="权限范围",)
dataScope = CharField(max_length=8, default='1', choices=DATASCOPE_CHOICES, verbose_name="权限范围", )
remark = TextField(verbose_name="备注", help_text="备注", null=True, blank=True)
dept = ManyToManyField(to='permission.Dept', verbose_name='数据权限-关联部门', db_constraint=False)
menu = ManyToManyField(to='permission.Menu', verbose_name='关联菜单权限', db_constraint=False)

View File

@ -5,7 +5,7 @@ from django.contrib.auth.models import UserManager, AbstractUser
from django.core.cache import cache
from django.db.models import IntegerField, ForeignKey, CharField, TextField, ManyToManyField, CASCADE
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class UserProfile(AbstractUser, CoreModel):
@ -25,7 +25,8 @@ class UserProfile(AbstractUser, CoreModel):
user_type = IntegerField(default=0, verbose_name="用户类型")
post = ManyToManyField(to='permission.Post', verbose_name='关联岗位', db_constraint=False)
role = ManyToManyField(to='permission.Role', verbose_name='关联角色', db_constraint=False)
dept = ForeignKey(to='permission.Dept', verbose_name='归属部门', on_delete=CASCADE, db_constraint=False, null=True, blank=True)
dept = ForeignKey(to='permission.Dept', verbose_name='归属部门', on_delete=CASCADE, db_constraint=False, null=True,
blank=True)
@property
def get_user_interface_dict(self):

View File

@ -10,8 +10,8 @@ from rest_framework.permissions import (BasePermission,
from rest_framework.request import Request
from rest_framework.views import APIView
from .models import Dept
from ..utils.model_util import get_dept
from apps.vadmin.permission.models import Dept
from apps.vadmin.utils.model_util import get_dept
logger = logging.getLogger(__name__)
User = get_user_model()

View File

@ -1,10 +1,10 @@
from django.contrib.auth import get_user_model
from rest_framework import serializers
from ..op_drf.serializers import CustomModelSerializer
from ..op_drf.validator import CustomUniqueValidator
from ..permission.models import Menu, Dept, Post, Role
from ..system.models import MessagePush
from apps.vadmin.op_drf.serializers import CustomModelSerializer
from apps.vadmin.op_drf.validator import CustomUniqueValidator
from apps.vadmin.permission.models import Menu, Dept, Post, Role
from apps.vadmin.system.models import MessagePush
UserProfile = get_user_model()

View File

@ -3,8 +3,8 @@ import logging
from captcha.models import CaptchaStore
from ..utils.decorators import BaseCeleryApp
from ..utils.response import SuccessResponse
from apps.vadmin.utils.decorators import BaseCeleryApp
from apps.vadmin.op_drf.response import SuccessResponse
logger = logging.getLogger(__name__)
@BaseCeleryApp(name='apps.vadmin.permission.tasks.clear_invalid_captcha')

View File

@ -1,7 +1,7 @@
from django.urls import re_path
from rest_framework.routers import DefaultRouter
from ..permission.views import MenuModelViewSet, DeptModelViewSet, PostModelViewSet, RoleModelViewSet, \
from apps.vadmin.permission.views import MenuModelViewSet, DeptModelViewSet, PostModelViewSet, RoleModelViewSet, \
UserProfileModelViewSet
router = DefaultRouter()

View File

@ -2,18 +2,18 @@ from django.contrib.auth import authenticate, get_user_model
from rest_framework.request import Request
from rest_framework.views import APIView
from .permissions import CommonPermission, DeptDestroyPermission
from ..op_drf.filters import DataLevelPermissionsFilter
from ..op_drf.viewsets import CustomModelViewSet
from ..permission.filters import MenuFilter, DeptFilter, PostFilter, RoleFilter, UserProfileFilter
from ..permission.models import Role, Menu, Dept, Post
from ..permission.serializers import UserProfileSerializer, MenuSerializer, RoleSerializer, \
from apps.vadmin.op_drf.response import SuccessResponse, ErrorResponse
from apps.vadmin.permission.permissions import CommonPermission, DeptDestroyPermission
from apps.vadmin.op_drf.filters import DataLevelPermissionsFilter
from apps.vadmin.op_drf.viewsets import CustomModelViewSet
from apps.vadmin.permission.filters import MenuFilter, DeptFilter, PostFilter, RoleFilter, UserProfileFilter
from apps.vadmin.permission.models import Role, Menu, Dept, Post
from apps.vadmin.permission.serializers import UserProfileSerializer, MenuSerializer, RoleSerializer, \
MenuCreateUpdateSerializer, DeptSerializer, DeptCreateUpdateSerializer, PostSerializer, PostCreateUpdateSerializer, \
RoleCreateUpdateSerializer, DeptTreeSerializer, MenuTreeSerializer, UserProfileCreateUpdateSerializer, \
PostSimpleSerializer, RoleSimpleSerializer, ExportUserProfileSerializer, ExportRoleSerializer, ExportPostSerializer, \
UserProfileImportSerializer
from ..system.models import DictDetails
from ..utils.response import SuccessResponse, ErrorResponse
from apps.vadmin.system.models import DictDetails
UserProfile = get_user_model()

View File

@ -2,5 +2,5 @@ from django.apps import AppConfig
class SystemConfig(AppConfig):
name = 'vadmin.system'
name = 'apps.vadmin.system'
verbose_name = "系统管理"

View File

@ -1,7 +1,7 @@
import django_filters
from .models import LoginInfor, OperationLog, CeleryLog
from ..system.models import DictDetails, DictData, ConfigSettings, MessagePush, SaveFile
from apps.vadmin.system.models import DictDetails, DictData, ConfigSettings, MessagePush, SaveFile
from apps.vadmin.system.models import LoginInfor, OperationLog, CeleryLog
class DictDataFilter(django_filters.rest_framework.FilterSet):

View File

@ -1,10 +1,9 @@
from ..models.config_settings import ConfigSettings
from ..models.dict_data import DictData
from ..models.dict_details import DictDetails
from ..models.save_file import SaveFile
from ..models.message_push import MessagePush
from ..models.message_push import MessagePushUser
from ..models.logininfor import LoginInfor
from ..models.operation_log import OperationLog
from ..models.celery_log import CeleryLog
from apps.vadmin.system.models.celery_log import CeleryLog
from apps.vadmin.system.models.config_settings import ConfigSettings
from apps.vadmin.system.models.dict_data import DictData
from apps.vadmin.system.models.dict_details import DictDetails
from apps.vadmin.system.models.logininfor import LoginInfor
from apps.vadmin.system.models.message_push import MessagePush
from apps.vadmin.system.models.message_push import MessagePushUser
from apps.vadmin.system.models.operation_log import OperationLog
from apps.vadmin.system.models.save_file import SaveFile

View File

@ -1,6 +1,6 @@
from django.db.models import CharField, BooleanField, TextField
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class CeleryLog(CoreModel):

View File

@ -1,6 +1,6 @@
from django.db.models import CharField, ForeignKey, BooleanField, CASCADE
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class ConfigSettings(CoreModel):

View File

@ -1,6 +1,6 @@
from django.db.models import TextField, CharField,ForeignKey
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class DictData(CoreModel):

View File

@ -1,6 +1,6 @@
from django.db.models import CharField, ForeignKey, BooleanField, CASCADE
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class DictDetails(CoreModel):

View File

@ -1,6 +1,6 @@
from django.db.models import CharField, BooleanField, TextField
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class LoginInfor(CoreModel):

View File

@ -2,8 +2,8 @@ from django.conf import settings
from django.db import models
from django.db.models import *
from ...op_drf.fields import UpdateDateTimeField, CreateDateTimeField
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.fields import UpdateDateTimeField, CreateDateTimeField
from apps.vadmin.op_drf.models import CoreModel
"""
消息通知模型

View File

@ -1,6 +1,6 @@
from django.db.models import TextField, CharField, BooleanField
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
class OperationLog(CoreModel):
@ -12,7 +12,7 @@ class OperationLog(CoreModel):
request_ip = CharField(max_length=32, verbose_name="请求ip地址", null=True, blank=True)
request_browser = CharField(max_length=64, verbose_name="请求浏览器", null=True, blank=True)
response_code = CharField(max_length=32, verbose_name="响应状态码", null=True, blank=True)
request_location = CharField(max_length=64,verbose_name="操作地点", null=True, blank=True)
request_location = CharField(max_length=64, verbose_name="操作地点", null=True, blank=True)
request_os = CharField(max_length=64, verbose_name="操作系统", null=True, blank=True)
json_result = TextField(verbose_name="返回信息", null=True, blank=True)
status = BooleanField(default=False, verbose_name="响应状态")

View File

@ -1,10 +1,10 @@
import os
import uuid
from django.db.models import CharField, FileField,BooleanField
from django.db.models import CharField, FileField, BooleanField
from django.utils import timezone
from ...op_drf.models import CoreModel
from apps.vadmin.op_drf.models import CoreModel
def files_path(instance, filename):

View File

@ -1,9 +1,9 @@
from django.core.cache import cache
from rest_framework import serializers
from .models import LoginInfor, OperationLog, CeleryLog
from ..op_drf.serializers import CustomModelSerializer
from ..system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush, MessagePushUser
from apps.vadmin.op_drf.serializers import CustomModelSerializer
from apps.vadmin.system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush, MessagePushUser
from apps.vadmin.system.models import LoginInfor, OperationLog, CeleryLog
# ================================================= #

View File

@ -1,7 +1,7 @@
from django.urls import re_path
from rest_framework.routers import DefaultRouter
from ..system.views import DictDataModelViewSet, DictDetailsModelViewSet, \
from apps.vadmin.system.views import DictDataModelViewSet, DictDetailsModelViewSet, \
ConfigSettingsModelViewSet, SaveFileModelViewSet, MessagePushModelViewSet, LoginInforModelViewSet, \
OperationLogModelViewSet, CeleryLogModelViewSet, SystemInfoApiView

View File

@ -6,25 +6,25 @@ from django.db.models import Q
from rest_framework.request import Request
from rest_framework.views import APIView
from .models import LoginInfor, OperationLog, CeleryLog
from ..op_drf.filters import DataLevelPermissionsFilter
from ..op_drf.viewsets import CustomModelViewSet
from ..permission.permissions import CommonPermission
from ..system.filters import DictDetailsFilter, DictDataFilter, ConfigSettingsFilter, MessagePushFilter, \
from apps.vadmin.op_drf.filters import DataLevelPermissionsFilter
from apps.vadmin.op_drf.response import SuccessResponse
from apps.vadmin.op_drf.viewsets import CustomModelViewSet
from apps.vadmin.permission.permissions import CommonPermission
from apps.vadmin.system.filters import DictDetailsFilter, DictDataFilter, ConfigSettingsFilter, MessagePushFilter, \
SaveFileFilter, LoginInforFilter, OperationLogFilter, CeleryLogFilter
from ..system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush
from ..system.models import MessagePushUser
from ..system.serializers import DictDataSerializer, DictDataCreateUpdateSerializer, DictDetailsSerializer, \
from apps.vadmin.system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush
from apps.vadmin.system.models import LoginInfor, OperationLog, CeleryLog
from apps.vadmin.system.models import MessagePushUser
from apps.vadmin.system.serializers import DictDataSerializer, DictDataCreateUpdateSerializer, DictDetailsSerializer, \
DictDetailsCreateUpdateSerializer, ConfigSettingsSerializer, \
ConfigSettingsCreateUpdateSerializer, SaveFileSerializer, SaveFileCreateUpdateSerializer, \
ExportConfigSettingsSerializer, ExportDictDataSerializer, ExportDictDetailsSerializer, \
MessagePushSerializer, MessagePushCreateUpdateSerializer, ExportMessagePushSerializer, LoginInforSerializer, \
OperationLogSerializer, ExportOperationLogSerializer, ExportLoginInforSerializer, CeleryLogSerializer, \
ExportCeleryLogSerializer
from ..utils.export_excel import export_excel_save_model
from ..utils.file_util import get_all_files, remove_empty_dir, delete_files
from ..utils.response import SuccessResponse
from ..utils.system_info_utils import get_memory_used_percent, get_cpu_used_percent, get_disk_used_percent
from apps.vadmin.utils.export_excel import export_excel_save_model
from apps.vadmin.utils.file_util import get_all_files, remove_empty_dir, delete_files
from apps.vadmin.utils.system_info_utils import get_memory_used_percent, get_cpu_used_percent, get_disk_used_percent
class DictDataModelViewSet(CustomModelViewSet):

View File

@ -2,5 +2,5 @@ from django.apps import AppConfig
class TemplateConfig(AppConfig):
name = 'vadmin.template'
name = 'apps.vadmin.template'
verbose_name = "模板App"

View File

@ -22,9 +22,9 @@ from django.urls import re_path, include
from rest_framework.documentation import include_docs_urls
from rest_framework.views import APIView
from .permission.views import GetUserProfileView, GetRouters
from .utils.login import LoginView, LogoutView
from .utils.response import SuccessResponse
from apps.vadmin.permission.views import GetUserProfileView, GetRouters
from apps.vadmin.utils.login import LoginView, LogoutView
from apps.vadmin.op_drf.response import SuccessResponse
class CaptchaRefresh(APIView):

View File

@ -12,8 +12,8 @@ from django.utils.translation import ugettext as _
from rest_framework import exceptions
from rest_framework_jwt.utils import jwt_decode_handler
from .jwt_util import jwt_get_session_id
from ..permission.models.users import UserProfile
from apps.vadmin.permission.models.users import UserProfile
from apps.vadmin.utils.jwt_util import jwt_get_session_id
logger = logging.getLogger(__name__)
User = get_user_model()

View File

@ -1,13 +1,10 @@
import logging
from captcha.models import CaptchaStore
from django.conf import settings
from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend
from django.utils import timezone
from rest_framework.authentication import SessionAuthentication as DjangoSessionAuthentication
logger = logging.getLogger(__name__)
UserModel = get_user_model()

View File

@ -15,8 +15,8 @@ from rest_framework.response import Response
from rest_framework_extensions.settings import extensions_api_settings
from application.celery import app
from .string_util import bas64_encode_text, bas64_decode_text
from ..system.models import CeleryLog
from apps.vadmin.system.models import CeleryLog
from apps.vadmin.utils.string_util import bas64_encode_text, bas64_decode_text
def get_cache(alias=None):
@ -34,12 +34,13 @@ def BaseCeleryApp(name, save_success_logs=True):
:param save_success_logs: 是否保存成功的日志(适用于频率高的celery任务成功不需要保存日志则传False)
:return:
"""
def wraps(func):
@app.task(name=name)
@functools.wraps(func)
def wrapper(*args, **kwargs):
obj = CeleryLog()
obj.name = ''.join(str(func.__doc__).replace(' ','').split('\n')[:2])
obj.name = ''.join(str(func.__doc__).replace(' ', '').split('\n')[:2])
obj.func_name = str(func.__name__)
obj.kwargs = f"*args{args}\n**kwargs{kwargs}"
start_time = datetime.now()

View File

@ -4,8 +4,7 @@ import traceback
from rest_framework import exceptions
from rest_framework.views import set_rollback
from .request_util import get_verbose_name
from .response import ErrorResponse
from apps.vadmin.op_drf.response import ErrorResponse
logger = logging.getLogger(__name__)

View File

@ -7,8 +7,8 @@ import xlrd
import xlwt
from django.conf import settings
from ..system.models import SaveFile
from ..system.serializers import SaveFileSerializer
from apps.vadmin.system.models import SaveFile
from apps.vadmin.system.serializers import SaveFileSerializer
def len_byte(value):

View File

@ -10,12 +10,11 @@ from rest_framework.permissions import IsAuthenticated
from rest_framework.views import APIView
from rest_framework_jwt.views import ObtainJSONWebToken, jwt_response_payload_handler
from .exceptions import GenException
from .jwt_util import jwt_get_session_id
from .request_util import get_request_ip, get_os, get_browser, get_login_location
from .response import SuccessResponse, ErrorResponse
# from .jwt_util import jwt_response_payload_handler
from ..system.models.logininfor import LoginInfor
from apps.vadmin.system.models.logininfor import LoginInfor
from apps.vadmin.utils.exceptions import GenException
from apps.vadmin.utils.jwt_util import jwt_get_session_id
from apps.vadmin.utils.request_util import get_request_ip, get_os, get_browser, get_login_location
from apps.vadmin.op_drf.response import SuccessResponse, ErrorResponse
logger = logging.getLogger(__name__)
@ -62,7 +61,7 @@ class LoginView(ObtainJSONWebToken):
else:
raise GenException(message='验证码错误')
def save_login_infor(self, request, msg='',status=True,session_id=''):
def save_login_infor(self, request, msg='', status=True, session_id=''):
User = get_user_model()
instance = LoginInfor()
instance.session_id = session_id
@ -89,7 +88,7 @@ class LoginView(ObtainJSONWebToken):
session_id = jwt_get_session_id(token)
key = f"{self.prefix}_{session_id}_{username}"
cache.set(key, token, self.ex.total_seconds())
self.save_login_infor(request, '登录成功',session_id=session_id)
self.save_login_infor(request, '登录成功', session_id=session_id)
if self.JWT_AUTH_COOKIE and token:
expiration = (datetime.datetime.utcnow() + self.ex)
response.set_cookie(self.JWT_AUTH_COOKIE,
@ -98,7 +97,7 @@ class LoginView(ObtainJSONWebToken):
domain=settings.SESSION_COOKIE_DOMAIN,
httponly=False)
return response
self.save_login_infor(request, '登录失败,账户/密码不正确',False)
self.save_login_infor(request, '登录失败,账户/密码不正确', False)
return ErrorResponse(data=serializer.errors, msg='账户/密码不正确')
# def handle_exception(self, exc):

View File

@ -6,7 +6,7 @@ from django.apps.config import AppConfig
from django.db.models.fields import Field
from rest_framework.renderers import JSONRenderer
from ..permission.models import Dept
from apps.vadmin.permission.models import Dept
def get_primary_field(model, many=False):

View File

@ -1,91 +0,0 @@
"""
常用的Response以及Django的ResponseDRF的Response
"""
from django.http.response import DjangoJSONEncoder, JsonResponse
from rest_framework.response import Response
class OpDRFJSONEncoder(DjangoJSONEncoder):
"""
重写DjangoJSONEncoder
(1)默认返回支持中文格式的json字符串
"""
def __init__(self, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False,
indent=None, separators=None, default=None):
super().__init__(skipkeys=skipkeys, ensure_ascii=False, check_circular=check_circular,
allow_nan=allow_nan, sort_keys=sort_keys, indent=indent, separators=separators,
default=default)
class SuccessResponse(Response):
"""
标准响应成功的返回, SuccessResponse(data)或者SuccessResponse(data=data)
(1)默认错误码返回2000, 不支持指定其他返回码
"""
def __init__(self, data=None, msg='success', status=None, template_name=None, headers=None, exception=False,
content_type=None):
self.std_data = {
"code": 200,
"data": data,
"msg": msg,
"status": 'success'
}
super().__init__(self.std_data, status, template_name, headers, exception, content_type)
def __str__(self):
return str(self.std_data)
class ErrorResponse(Response):
"""
标准响应错误的返回,ErrorResponse(msg='xxx')
(1)默认错误码返回2001, 也可以指定其他返回码:ErrorResponse(code=xxx)
"""
def __init__(self, data=None, msg='error', code=201, status=None, template_name=None, headers=None,
exception=False, content_type=None):
self.std_data = {
"code": code,
"data": data,
"msg": msg,
"status": 'error'
}
super().__init__(self.std_data, status, template_name, headers, exception, content_type)
def __str__(self):
return str(self.std_data)
class SuccessJsonResponse(JsonResponse):
"""
标准JsonResponse, SuccessJsonResponse(data)SuccessJsonResponse(data=data)
(1)仅SuccessResponse无法使用时才能推荐使用SuccessJsonResponse
"""
def __init__(self, data, msg='success', encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs):
std_data = {
"code": 200,
"data": data,
"msg": msg,
"status": 'success'
}
super().__init__(std_data, encoder, safe, json_dumps_params, **kwargs)
class ErrorJsonResponse(JsonResponse):
"""
标准JsonResponse, 仅ErrorResponse无法使用时才能使用ErrorJsonResponse
(1)默认错误码返回2001, 也可以指定其他返回码:ErrorJsonResponse(code=xxx)
"""
def __init__(self, data, msg='error', code=201, encoder=OpDRFJSONEncoder, safe=True, json_dumps_params=None,
**kwargs):
std_data = {
"code": code,
"data": data,
"msg": msg,
"status": 'error'
}
super().__init__(std_data, encoder, safe, json_dumps_params, **kwargs)