Compare commits

...

4 Commits

3 changed files with 38 additions and 5 deletions

View File

@ -35,7 +35,7 @@ def get_user_route(user: User) -> List[str]:
user_routes_qs = perm_qs
else:
user_routes_qs = perm_qs.filter(role_perms__in=PostRole.objects.filter(
post__in=UserPost.objects.filter(user=user).values_list("post", flat=True)).values_list("role", flat=True))
post__in=UserPost.objects.filter(user=user).values_list("post", flat=True)).values_list("role", flat=True)).distinct()
user_routes_qs = user_routes_qs.order_by('sort')
user_routes_list = list(user_routes_qs.values("id", "name", "type", "route_name", "icon", "path", "component", "is_hidden", "is_fullpage", "parent"))
for item in user_routes_list:

View File

@ -13,9 +13,11 @@ def execute_raw_sql(sql: str, params=None):
cursor.execute(sql, params=params)
else:
cursor.execute(sql)
columns = [desc[0] for desc in cursor.description]
rows = cursor.fetchall()
return columns, rows
if cursor.description:
columns = [desc[0] for desc in cursor.description]
rows = cursor.fetchall()
return columns, rows
return [], []
def format_sqldata(columns, rows):
return [columns] + rows, [dict(zip(columns, row)) for row in rows]

View File

@ -9,6 +9,7 @@ import requests
from io import BytesIO
from rest_framework.serializers import ValidationError
import ast
from typing import Dict
class CodeAnalyzer(ast.NodeVisitor):
def __init__(self):
@ -250,6 +251,23 @@ def check_id_number(idcard):
return False, Errors[0]
def check_id_number_strict(id_card: str):
"""校验 18 位中国身份证号码是否合法"""
if not re.match(r'^\d{17}[\dXx]$', id_card):
return False
# 系数和校验码
weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
check_codes = "10X98765432"
# 计算校验码
total = sum(int(id_card[i]) * weights[i] for i in range(17))
expected_check_code = check_codes[total % 11]
if expected_check_code == id_card[-1].upper():
return id_card
raise ValidationError('身份证号校验失败')
def check_phone_e(phone):
re_phone = r'^1\d{10}$'
if not re.match(re_phone, phone):
@ -305,4 +323,17 @@ def build_tree_from_list(data, parent_field="parent"):
else:
tree.append(item)
return tree
return tree
def convert_ordereddict(item):
"""递归地将 OrderedDict 转换为普通字典"""
if isinstance(item, list):
return [convert_ordereddict(i) for i in item] # 递归处理列表中的每个元素
elif isinstance(item, dict):
# 如果是 OrderedDict 或普通字典,遍历所有键值对进行转换
return {key: convert_ordereddict(value) for key, value in item.items()}
return item
def update_dict(d, update_data:Dict) -> Dict:
d.update(update_data)
return d