热点资讯
- 短视频 斥资34亿建造的鸟巢,年宝贵费高达8000万,16年往常,回本了吗?
- 短视频 刘国梁:国乒巴黎奥运必胜!王楚钦渴慕自我极限
- 【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!! 7月26日基金净值
- 【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!! 新丽传媒与正午阳光
- sex5 com 37岁副显露闫罗彬牺牲,弟弟7月份牺牲,家东谈主发声:他压力很大!|本科|西南大学|中山大学
- 色人阁26uuu 众康科技配合互联网病院派司案例|杭州亿保健康互联网病院
- 短视频 视听盛宴相伴好意思好时光 福清影院大变化
- 短视频 蚂蚁电竞N27U亲测,4K区别率+160Hz刷新率,游戏职责还得靠它|色域|裸露器|高区别率
- 动漫 在线 九尾讨论 | 电影行业发展(刊行阶段)舆情分析|脚本|电影东说念主|中国电影
- 【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!! 法搜检官:电报独创
你的位置:西风萝莉恋足 > 小色哥奇米 > 【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!! django-simpleui的菜单权限成就,杀青无权限不显现菜单
【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!! django-simpleui的菜单权限成就,杀青无权限不显现菜单
- 发布日期:2024-08-24 08:57 点击次数:187
如若民众心爱我的著述【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!!,接待给我的公众号标星⭐,第一期间赢得最新资源、最新面孔,庸碌给民众推选好资源、好面孔,虽然也不错免费使用ChatGPT。
图片【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!!【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!!
图片
聊聊需求当咱们使用Django+simpleui这个框架的时候,如若念念杀青当某个用户莫得某个菜单的权限时,他无法在界面上看到这个菜单,在不更正源码的情况下是无法杀青的,换句话说等于无法平直杀青阐明权限显现或荫藏菜单。
小马大车处分想法-修改simpleui的源代码需求:Django-simpleui杀青阐明用户权限显现偶而荫藏菜单
修改模块:simpletags.py旅途:...XXX\venv\Lib\site-packages\simpleui\templatetags\simpletags.py(阐明你的面孔笃定旅途,一般为造谣环境)第一步:凝视原有的菜单模块:# app_list = context.get('app_list')# for app in app_list:# _models = [# {# 'name': m.get('name'),# 'icon': get_icon(m.get('object_name'), unicode_to_str(m.get('name'))),# 'url': m.get('admin_url'),# 'addUrl': m.get('add_url'),# 'breadcrumbs': [{# 'name': app.get('name'),# 'icon': get_icon(app.get('app_label'), app.get('name'))# }, {# 'name': m.get('name'),# 'icon': get_icon(m.get('object_name'), unicode_to_str(m.get('name')))# }]# }## for m in app.get('models')# ] if app.get('models') else []## module = {# 'name': app.get('name'),# 'icon': get_icon(app.get('app_label'), app.get('name')),# 'models': _models# }# data.append(module)第二步:读取SIMPLEUI_CONFIG设备清除菜单处理:
... # 如若有menu 就读取,莫得就调用系统的 key = 'system_keep' # if config and 'menus' in config: # if config.get(key, None): # temp = config.get('menus') # for i in temp: # # 处理面包屑 # if 'models' in i: # for k in i.get('models'): # k['breadcrumbs'] = [{ # 'name': i.get('name'), # 'icon': i.get('icon') # }, { # 'name': k.get('name'), # 'icon': k.get('icon') # }] # else: # i['breadcrumbs'] = [{ # 'name': i.get('name'), # 'icon': i.get('icon') # }] # data.append(i) # else: # data = config.get('menus')# 修改为 if config and 'menus' in config: total = config.get('menus') group_permissions = len(context.request.user.get_group_permissions()) user_permissions = len(context.request.user.get_user_permissions()) if (group_permissions > user_permissions): user_permissions = context.request.user.get_group_permissions().union( context.request.user.get_user_permissions()) else: user_permissions = context.request.user.get_group_permissions().union( context.request.user.get_user_permissions()) for level_one_menu in total: # 与一级菜单codename比对权限 if 'codename' not in level_one_menu or ( True in [(True if level_one_menu['codename'] in u_p else False) for u_p in user_permissions]) == False: if context.request.user.is_superuser == False: continue # 处理面包屑 if 'models' in level_one_menu: del_models = list() for level_two_menu in level_one_menu.get('models'): if context.request.user.is_superuser: pass elif 'codename' not in level_two_menu.keys(): del_models.append(level_two_menu) continue elif ('codename' not in level_one_menu or 'codename' not in level_two_menu or (level_one_menu['codename'] + '.' + level_two_menu[ 'codename'] not in user_permissions)) and \ (level_one_menu['codename'] + '.view_' + level_two_menu['codename'] not in user_permissions) \ and ( level_one_menu['codename'] + '.add_' + level_two_menu['codename'] not in user_permissions) \ and (level_one_menu['codename'] + '.change_' + level_two_menu[ 'codename'] not in user_permissions) \ and (level_one_menu['codename'] + '.delete_' + level_two_menu[ 'codename'] not in user_permissions) \ and level_two_menu['codename'] not in user_permissions: del_models.append(level_two_menu) continue level_two_menu['breadcrumbs'] = [{ 'name': level_one_menu.get('name'), 'icon': level_one_menu.get('icon') }, { 'name': level_two_menu.get('name'), 'icon': level_two_menu.get('icon') }] for del_m in del_models: level_one_menu['models'].remove(del_m) else: level_one_menu['breadcrumbs'] = [{ 'name': level_one_menu.get('name'), 'icon': level_one_menu.get('icon') }] if len(level_one_menu['models']) > 0: data.append(level_one_menu) else: data = config.get('menus')... # 赢得侧边栏排序, 如若设备了就按照设备的本色排序, 留空则示意默许排序以及一皆显现 # if config.get('menu_display') is not None: # display_data = list() # for _app in data: # if _app['name'] not in config.get('menu_display'): # continue # _app['_weight'] = config.get('menu_display').index(_app['name']) # display_data.append(_app) # display_data.sort(key=lambda x: x['_weight']) # data = display_data# 修改 if config.get('menu_display') is not None: display_data = list() for _app in data: if _app['name'] not in config.get('menu_display'): continue # 处理二级菜单显现权限 if _app.get('menu_display') is not None: display_model = list() for _app_m in _app['models']: if _app_m['name'] not in _app.get('menu_display'): continue # 莫得排序逻辑,这里的_weight暂时无效 _app['_weight'] = config.get('menu_display').index(_app['name']) display_data.append(_app) else: display_model = _app['models'] _app['models'] = display_model _app['_weight'] = config.get('menu_display').index(_app['name']) display_data.append(_app) display_data.sort(key=lambda x: x['_weight']) data = display_data...第三步:修改setting.py中的菜单成就
提神:
成就中一级菜单中的codename一般为app名字,二级菜单的codename一般为模子中的类名;只填写一级菜单的codename或不填一级菜单和二级菜单的codename,示意该只允许superuser检讨。...SIMPLEUI_CONFIG = { 'system_keep': False, # 关闭系统菜单 'dynamic': True, # 设备是否开开动态菜单, 默许为False. 如若开启, 则会在每次用户登陆时动态展示菜单本色 'menus': [ # 菜单1 { 'app': 'app_article_ad', 'codename' : 'app_article_ad', 'name': '公众号著述', 'icon': 'fas fa-user-shield', 'models': [ { 'name': '著述料理', 'codename':'job_article', 'icon': 'fa fa-user', 'url': 'app_article_ad/job_article/' }, ] }, # 菜单2 { 'app': 'app_files', 'codename': 'app_files', 'name': '资源料理', 'icon': 'fas fa-user-shield', 'models': [ { 'name': '文献料理', 'codename': 'file', 'icon': 'fa fa-user', 'url': '/app_files/file_list' }, ] },...后果料理员界面
图片
平淡用户界面图片
点赞+矜恤矜恤、点赞、保藏、转发、看一看捏续共享种种原理的好面孔,有任何问题留言磋商。图片
图片
本站仅提供存储行状,通盘本色均由用户发布,如发现存害或侵权本色,请点击举报。相关资讯
- 【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!! 复返北京,王曼昱缺席港赛,王楚钦展现豪车,孙颖莎简朴2024-08-30
- 【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!! 法搜检官:电报独创东说念主辞谢离法,缴500万欧保释金2024-08-29
- 【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!! 上半年港南区新增规上工业企业22家2024-08-27
- 【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!! 2-0全国第2, 12-111-0, 国羽2金法国1金收官, 大马斥逐22年恭候2024-08-27
- 【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!! 德扑圈计谋:2个必须慢打的场所2024-08-27
- 【KIBD-216】kira☆kira BEST EMIRI-中出し性交20発超え-総集編8時間!! 紧记殷殷吩咐 勇闯改良新路丨借力绿色智能制造 “安徽船谷” 扬帆启程_大皖新闻 | 安徽网2024-08-26