fix: 修改权限判断bug

This commit is contained in:
XIE7654
2025-10-02 14:52:01 +08:00
parent 7099cbbc1e
commit a3ec4ad1e5
5 changed files with 15 additions and 13 deletions

View File

@@ -1,8 +1,9 @@
import json
from datetime import datetime from datetime import datetime
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from system.models import Menu, MenuMeta from system.models import Menu, MenuMeta
import re
from utils.string_utils import camel_to_snake
""" """
自动生成 菜单 代码的 Django 管理命令 自动生成 菜单 代码的 Django 管理命令
使用方法: python manage.py gen_menu_json <app> <model> <parent> 使用方法: python manage.py gen_menu_json <app> <model> <parent>
@@ -11,10 +12,6 @@ system 是 app 名称, Config 是 model 名称, System 是上级菜单名称
""" """
# gen_menu_json --app system --model Config --parent 系统管理 # gen_menu_json --app system --model Config --parent 系统管理
def camel_to_snake(name):
s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower()
def gen_menu(app_name, model_name, parent_menu_name, creator='admin'): def gen_menu(app_name, model_name, parent_menu_name, creator='admin'):
print(parent_menu_name, 'parent') print(parent_menu_name, 'parent')
now = datetime.now().strftime('%Y-%m-%d %H:%M:%S') now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

View File

@@ -8,12 +8,12 @@
""" """
import os import os
import re
from string import Template from string import Template
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import BaseCommand, CommandError
from django.apps import apps from django.apps import apps
from django.db import models from django.db import models
from django.conf import settings
from utils.string_utils import camel_to_snake
TPL_DIR = os.path.join(os.path.dirname(__file__), 'tpl') TPL_DIR = os.path.join(os.path.dirname(__file__), 'tpl')
@@ -23,9 +23,6 @@ def render_tpl(tpl_name, context):
tpl = Template(f.read()) tpl = Template(f.read())
return tpl.substitute(context) return tpl.substitute(context)
def camel_to_snake(name):
s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower()
def ensure_view_dirs(app_name, model_name_snake): def ensure_view_dirs(app_name, model_name_snake):
base_dir = f'../web/apps/web-antd/src/views/{app_name.lower()}' base_dir = f'../web/apps/web-antd/src/views/{app_name.lower()}'

View File

@@ -20,7 +20,8 @@ def update_user_login_info(user_id, client_ip, user_agent):
user.save(update_fields=['login_ip', 'last_login']) user.save(update_fields=['login_ip', 'last_login'])
# 获取地理位置信息 # 获取地理位置信息
location_info = get_location_from_ip(client_ip) # location_info = get_location_from_ip(client_ip)
location_info = None
# 记录登录日录 # 记录登录日录
LoginLog.objects.create( LoginLog.objects.create(

View File

@@ -1,6 +1,8 @@
from rest_framework import permissions from rest_framework import permissions
from rest_framework.permissions import BasePermission from rest_framework.permissions import BasePermission
from system.models import Menu from system.models import Menu
from utils.string_utils import camel_to_snake
class IsSuperUserOrReadOnly(BasePermission): class IsSuperUserOrReadOnly(BasePermission):
"""超级用户可读写,普通用户只读""" """超级用户可读写,普通用户只读"""
@@ -21,7 +23,7 @@ class HasButtonPermission(BasePermission):
if not required_code: if not required_code:
# 可自动推断权限编码逻辑 # 可自动推断权限编码逻辑
app_label = view.queryset.model._meta.app_label app_label = view.queryset.model._meta.app_label
model_name = view.queryset.model._meta.model_name model_name = camel_to_snake(view.queryset.model._meta.model_name)
action = getattr(view, 'action', None) action = getattr(view, 'action', None)
action_map = { action_map = {
'create': 'create', 'create': 'create',

View File

@@ -0,0 +1,5 @@
import re
def camel_to_snake(name):
s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower()