def permission_sort_modify(): """权限列表排序""" permission_id = toint(request.args.get('permission_id', '0')) new_sort = toint(request.args.get('new_sort', '0')) new_sort = new_sort if new_sort > 0 else -1 if new_sort < 0: return u'只能输入大于0的数字' if new_sort > 10000000: return u'数字不能过大' if permission_id <= 0: return u'参数出错' p = Permission.get(permission_id) if p: p.update(sort_order=new_sort, commit=True) return u'ok'
def menu_save(): """保存菜单""" g.title = u'保存菜单' g.page_type = '' errmsg = {} form = request.form permission_id = toint(form.get('permission_id', '0')) endpoint = form.get('endpoint', '').strip() endpoint_name = form.get('endpoint_name', '').strip() endpoint_icon = form.get('endpoint_icon', '').strip() menu_type = toint(form.get('menu_type', '0')) sort_order = toint(form.get('sort_order', '0')) new_endpoint_list = form.get('endpoint_list', '').strip() #新端点列表 # 必填项检查 if menu_type == 0: required_param_list = [ 'endpoint', 'endpoint_name', 'endpoint_icon', 'menu_type', 'sort_order' ] else: required_param_list = [ 'endpoint', 'endpoint_name', 'menu_type', 'sort_order', 'endpoint_list' ] for param in required_param_list: val = form.get(param, '') val = val.strip() if not val: errmsg[param] = u'必填项' if errmsg: g.errmsg = errmsg log_debug('errmsg:%s' % g.errmsg) return render_template('sys/menu_add.html.j2', f=form) if permission_id <= 0: permission_info = Permission.create(endpoint_list=endpoint) # 判断新增端点是否已经存在 if menu_type == 0: e_q = Permission.query.filter( Permission.endpoint == endpoint).filter( Permission.parent_id == 0) else: e_q = Permission.query.filter( Permission.endpoint == endpoint).filter( Permission.parent_id > 0) e = e_q.first() if e: errmsg['endpoint'] = u'新增端点:%s已经存在' % endpoint # 判断新增端点名称是否存在 en = e_q.filter(Permission.endpoint_name == endpoint_name).first() if en: errmsg['endpoint_name'] = u'新增端点名称:%s已经存在' % endpoint_name if errmsg: g.errmsg = errmsg log_debug('errmsg:%s' % g.errmsg) return render_template('sys/menu_add.html.j2', f=form) else: permission_info = Permission.get(permission_id) if menu_type == 1: endpoint_list = db.session.query( Permission.endpoint).filter(Permission.parent_id == 0).all() endpoint_key_list = map(lambda e: e.endpoint.split('.')[0], endpoint_list) new_endpoint = endpoint.split('.') new_endpoint_key = new_endpoint[0] if new_endpoint_key not in endpoint_key_list: errmsg['endpoint'] = u'子菜单端点%s与主菜单不符合' % endpoint if errmsg: g.errmsg = errmsg log_debug('errmsg:%s' % g.errmsg) return render_template('sys/menu_add.html.j2', f=form) # 允许访问的端点列表处理 ne_list = new_endpoint_list.split(',') # 分割逗号后允许访问的端点列表 if endpoint not in ne_list: new_endpoint_list = endpoint + ',' + new_endpoint_list permission_info.update(endpoint_list=new_endpoint_list) for key in endpoint_key_list: if key != new_endpoint_key: continue p = Permission.query.filter( Permission.endpoint.like(u'%' + new_endpoint_key)).first() if not p: p = Permission.query.filter( Permission.endpoint.like(u'%' + new_endpoint_key + u'%')).first() if not p: errmsg['endpoint'] = u'找不到对应的主菜单' if errmsg: g.errmsg = errmsg log_debug('errmsg:%s' % g.errmsg) return render_template('sys/menu_add.html.j2', f=form) parent_id = p.permission_id parent_id = parent_id if menu_type == 1 else 0 permission_info.update(parent_id=parent_id, endpoint=endpoint, endpoint_name=endpoint_name, endpoint_icon=endpoint_icon, sort_order=sort_order, commit=True) return redirect(url_for('sys.menu_list'))