首页 > 其他分享 >django离线脚本【模板】

django离线脚本【模板】

时间:2024-09-20 19:35:51浏览次数:8  
标签:route 离线 django item dict import local method 模板

import os
import sys
import django

base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(base_dir)

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 's2_day33_rbac_01_find_route.settings')
django.setup()

from django.conf import settings
from django.utils.module_loading import import_string
from django.urls import URLResolver, URLPattern
from utils.ext_url import RbacPattern
from importlib import import_module
from api import models

local_route_dict = {
    # ("v1", "get"): "威1",
    # ("v1", "post"): "威1",
    # ("v2", "get"): "威1",
    # ("v2", "post"): "威1",
}

root = import_module("s2_day33_rbac_01_find_route.urls")
resolver_list = [(root, None), ]
for resolver, pre_namespace in resolver_list:
    patterns = getattr(resolver, "urlpatterns", None) or getattr(resolver, "url_patterns", None)
    for item in patterns:
        if type(item) == RbacPattern:
            view_class = getattr(item.callback, 'view_class', None)
            actions = getattr(item.callback, 'actions', None)
            if view_class and not actions:
                # 继承API定义视图
                method_list = [m for m in ['get', 'post', 'put', 'patch', 'delete'] if hasattr(view_class, m)]
                # print("API视图", item.name, item.text, method_list)
                for m in method_list:
                    local_route_dict[(item.name, m)] = item.text
                continue

            if not view_class and actions:
                # print("ViewSet视图", item.name, item.text, actions)
                for m in actions:
                    local_route_dict[(item.name, m)] = item.text
                continue

        if type(item) == URLResolver:
            namespace_list = [ele for ele in [pre_namespace, item.namespace] if ele]
            total_namespace = ":".join(namespace_list) if namespace_list else None
            resolver_list.append((item, total_namespace))

local_route_set = set(local_route_dict)

db_pers = models.Permission.objects.all()
db_pers_dict = {(item.route, item.method): item.name for item in db_pers}
db_pers_set = set(db_pers_dict)

# 新增
models.Permission.objects.bulk_create(
    [models.Permission(route=route, method=method, name=local_route_dict[(route, method)]) for route, method in
     local_route_set - db_pers_set]
)
# 删除
for route, method in db_pers_set - local_route_set:
    models.Permission.objects.filter(route=route, method=method).delete()

# 更新
for group in db_pers_set & local_route_set:
    # ("v1", "get")
    if db_pers_dict[group] == local_route_dict[group]:
        continue

    route, method = group
    models.Permission.objects.filter(route=route, method=method).update(name=local_route_dict[group])

标签:route,离线,django,item,dict,import,local,method,模板
From: https://www.cnblogs.com/cloud-2-jane/p/18423155

相关文章

  • WPF 数据模板Data Template
    数据模板DataTemplate控件模板决定了数据的展示形式和用户体检,在软件UI设计中非常重要。同样数据的展示形式越来越多样化,正所谓:横看成岭侧成峰,远近高低各不同。同样的数据内容,在DataGrid中的展示是文本的列表形式,在ComboBox中是下拉框的形式。给数据披上外衣,将数据和形式解耦......
  • WPF 控件模板ControlTemplate
    <Button><Button.Template><ControlTemplate><Grid><EllipseName="faceEllipse"Width="{TemplateBindingButton.Width}"Height=&qu......
  • WPF 模板总结(Template)
    模板(Template):WPF系统不但支持传统的Winfrom编程的用户界面和用户体验设计,更支持使用专门的设计工具Blend进行专业设计,同时还推出了以模板为核心的新一代设计理念。在WPF中,通过引入模板(Template)微软将数据和算法的“内容”与“形式”解耦了。模板是算法和数据的外衣,决定了它们......
  • qwen2.5 vllm推理;openai function call调用中文离线agents使用
    参考:https://qwenlm.github.io/zh/blog/qwen2.5/https://qwen.readthedocs.io/zh-cn/latest/framework/function_call.html#vllm安装:pipinstall-Uvllm-ihttps://pypi.tuna.tsinghua.edu.cn/simplevllm-0.6.1.post2运行:</......
  • 快速幂模板/洛谷P1226【模板】快速幂
    ​本题是CSP-J组的第四题。题意:给出一个有向图,当前在1号点,初始在时间0,必须在k的倍数的时间出发,且到终点的时间也必须是k的倍数。每条边有一个边权,只有在当前时间≥时才可以通过,且不能在原地不动,即每一个时间点必须走一条边。问从11号点出发到nn号时最早的时刻。(没......
  • VSCode 定义代码模板
    在使用编写代码的过程中,经常会写一些固定代码段。以Java为例,定义实体类时一般都会编写序列化版本号:@SerialprivatestaticfinallongserialVersionUID=1L;这段代码是固定写法,基本不会变,如果每次都手写的话,就比较繁琐了。VSCode提供了生成代码段的功能,为我们提供了便......
  • 计算机毕业设计推荐-基于python+Django的酒店预约预定平台【源码+文档+讲解】
    精彩专栏推荐订阅:在下方专栏......
  • Django4中的日志管理
    Django4中的日志管理参考:Django配置日志:https://www.cnblogs.com/Neeo/articles/17588553.htmlpython内置模块logging模块:https://www.cnblogs.com/Neeo/articles/10951734.html按照文件大小进行切割日志在你的settings.py中。LOGS_DIRS=os.path.join(BASE_DIR,'logs')if......
  • Nuxt Kit 中的模板处理
    title:NuxtKit中的模板处理date:2024/9/20updated:2024/9/20author:cmdragonexcerpt:摘要:本文详细介绍了在Nuxt3框架中,使用NuxtKit进行模板处理的方法,包括理解模板基本概念、使用addTemplate动态生成文件、应用addTypeTemplate注册类型模板以增强TypeScript支持,以......
  • Vue.js与Flask/Django后端配合详细讲解
    ✨博客主页:https://blog.csdn.net/m0_63815035?type=blog......