Compare commits
4 Commits
fd5130e4b3
...
3d2c703cac
| Author | SHA1 | Date |
|---|---|---|
|
|
3d2c703cac | |
|
|
a46e40e7d3 | |
|
|
0673fc8ee0 | |
|
|
e71b90ec47 |
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue