Skip to content

Commit

Permalink
Merge pull request #482 from newpanjing/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
newpanjing committed Nov 8, 2023
2 parents 7a0e71a + 6e996f0 commit 5d5aa28
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 3 deletions.
10 changes: 7 additions & 3 deletions simpleui/templates/admin/actions.html
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,8 @@
</el-form>

<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="layerSubmit()" v-text="layer.confirm_button||'确定'"></el-button>
<el-button type="primary" @click="layerSubmit()" v-text="layer.confirm_button||'确定'"
:disabled="dialogConfirmDisabled" v-loading="dialogConfirmDisabled"></el-button>
<el-button @click="visible = false" v-text="layer.cancel_button||'取消'"></el-button>
</span>
</el-dialog>
Expand All @@ -210,7 +211,8 @@
params: [],
layer: {},
rules: [],
action: ''
action: '',
dialogConfirmDisabled: false
},
methods: {
layerSubmit() {
Expand Down Expand Up @@ -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') {
Expand All @@ -261,6 +264,7 @@
message: res.data.msg,
type: res.data.status
});
this.dialogConfirmDisabled = false;
}).catch(err => self.$message.error(err));
}
}
Expand Down
33 changes: 33 additions & 0 deletions simpleui/templatetags/simpletags.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = []
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit 5d5aa28

Please sign in to comment.