diff --git a/simpleui/templates/admin/actions.html b/simpleui/templates/admin/actions.html
index 73574816..b8586a1a 100644
--- a/simpleui/templates/admin/actions.html
+++ b/simpleui/templates/admin/actions.html
@@ -192,7 +192,8 @@
@@ -210,7 +211,8 @@
params: [],
layer: {},
rules: [],
- action: ''
+ action: '',
+ dialogConfirmDisabled: false
},
methods: {
layerSubmit() {
@@ -245,11 +247,12 @@
data.append(item.key, item.value);
}
}
-
+ this.dialogConfirmDisabled = true;
axios.post('{% get_model_ajax_url %}'+window.location.search, data).then(res => {
if (res.data.status === 'redirect') {
self.visible = false;
window.location.href = res.data.url;
+ this.dialogConfirmDisabled = false;
return;
}
if (res.data.status == 'success') {
@@ -261,6 +264,7 @@
message: res.data.msg,
type: res.data.status
});
+ this.dialogConfirmDisabled = false;
}).catch(err => self.$message.error(err));
}
}
diff --git a/simpleui/templatetags/simpletags.py b/simpleui/templatetags/simpletags.py
index 2f5681f9..4e91d92c 100644
--- a/simpleui/templatetags/simpletags.py
+++ b/simpleui/templatetags/simpletags.py
@@ -189,6 +189,36 @@ def format_table(d):
return format_html(html)
+def has_permission_in_config(config):
+ """
+ Recursively check if any menu or sub-menu in the configuration is configured with permissions.
+ """
+ if 'menus' in config:
+ for menu in config['menus']:
+ if has_permission_in_config(menu):
+ return True
+ if 'models' in config:
+ for model in config['models']:
+ if has_permission_in_config(model):
+ return True
+ if 'permission' in config:
+ return True
+ return
+
+
+def get_filtered_menus(menus, user_permissions):
+ def filter_menu(menu, permissions):
+ if 'models' in menu:
+ menu['models'] = [sub_menu for sub_menu in menu['models'] if 'permission' not in sub_menu or
+ sub_menu['permission'] in permissions]
+ for sub_menu in menu['models']:
+ filter_menu(sub_menu, permissions)
+ menu_configs = [menu for menu in menus if 'permission' not in menu or menu['permission'] in user_permissions]
+ for menu in menu_configs:
+ filter_menu(menu, user_permissions)
+ return menu_configs
+
+
@register.simple_tag(takes_context=True)
def menus(context, _get_config=None):
data = []
@@ -231,6 +261,9 @@ def menus(context, _get_config=None):
}
data.append(module)
+ if has_permission_in_config(config):
+ config["menus"] = get_filtered_menus(config["menus"], context.request.user.get_all_permissions())
+
# 如果有menu 就读取,没有就调用系统的
key = 'system_keep'
if config and 'menus' in config: