Comments (2)
def _get_user_info(self, user):
# if fill the _role, do not select from db
if hasattr(user, '_role'):
role = str(user._role)
else:
role = str(user.role_code)
if hasattr(user, '_wx_userid'):
wx_userid = user._wx_userid
else:
wx_userid = user.wx_userid
if hasattr(user, '_language'):
language = user._language
else:
language = user.language
if hasattr(user, '_time_zone'):
time_zone = user._time_zone
else:
time_zone = user.time_zone
return {
'username': user.username,
'chname': user.chname,
'qq': '',
'phone': user.phone,
'email': user.email,
'role': role,
'wx_userid': wx_userid,
'language': language,
'time_zone': time_zone
}
def _get_user_info_v2(self, user):
# if fill the _role, do not select from db
if hasattr(user, '_role'):
role = user._role
else:
role = user.role_code
if hasattr(user, '_wx_userid'):
wx_userid = user._wx_userid
else:
wx_userid = user.wx_userid
if hasattr(user, '_language'):
language = user._language
else:
language = user.language
if hasattr(user, '_time_zone'):
time_zone = user._time_zone
else:
time_zone = user.time_zone
return {
'bk_username': user.username,
'chname': user.chname,
'qq': '',
'phone': user.phone,
'email': user.email,
'bk_role': role,
'wx_userid': wx_userid,
'language': language,
'time_zone': time_zone
}
def choose_role_code(self, role_list):
# 多个角色,则已最高角色为主(superuser > developer > staff)
if RoleCodeEnum.SUPERUSER in role_list:
return RoleCodeEnum.SUPERUSER
if RoleCodeEnum.DEVELOPER in role_list:
return RoleCodeEnum.DEVELOPER
if RoleCodeEnum.OPERATOR in role_list:
return RoleCodeEnum.OPERATOR
if RoleCodeEnum.AUDITOR in role_list:
return RoleCodeEnum.AUDITOR
return RoleCodeEnum.STAFF
def filter_by_role(self, users, role):
from collections import defaultdict
from bkaccount.models import BkUserRole, BkRole, UserInfo
# make {user_id: userinfo}
userinfos = UserInfo.objects.all()
userinfo_dict = {u.user_id: u for u in userinfos}
# make {role_id:role_code}
roles = BkRole.objects.all()
role_dict = {r.id: r.code for r in roles}
# make { user_id:[role_id1, role_id2] }
user_role_code_list_dict = defaultdict(list)
for user_role in BkUserRole.objects.all():
role_code = role_dict[user_role.role_id]
user_role_code_list_dict[user_role.user_id].append(role_code)
# make {user_id:role_code}
user_role_code_dict = {}
for user_id, role_list in user_role_code_list_dict.iteritems():
r = self.choose_role_code(role_list)
user_role_code_dict[user_id] = r
# filter or not
shouldFilter = role.isdigit() and int(role) in ROLECODE_LIST
result = []
for user in users:
user._role = user_role_code_dict.get(user.id, RoleCodeEnum.STAFF)
userinfo = userinfo_dict.get(user.id)
if userinfo:
user._wx_userid = (userinfo.wx_userid or '')
user._language = (userinfo.language or '')
user._time_zone = (userinfo.time_zone or '')
else:
user._wx_userid = ""
user._language = ""
user._time_zone = ""
# will be filter by the role
if shouldFilter and user._role != int(role):
continue
result.append(user)
return result
def get_all_user(self, role):
"""
获取所有用户
"""
users = self.all()
users = self.filter_by_role(users, role)
# if role.isdigit() and int(role) in ROLECODE_LIST:
# users = [user for user in users if user.role_code == int(role)]
return [self._get_user_info(user) for user in users]
def get_all_users_v2(self, role):
"""
获取所有用户
"""
users = self.all()
users = self.filter_by_role(users, role)
# if role.isdigit() and int(role) in ROLECODE_LIST:
# users = [user for user in users if user.role_code == int(role)]
return [self._get_user_info_v2(user) for user in users]
当前优化代码, 需要重构后合并
from bk-paas.
最新社区版已修复
from bk-paas.
Related Issues (20)
- 部署后登录报错Invalid APP Code [bk_app_code=bk_paas], please confirm if the APP Code has been registered HOT 1
- 2.4.14 paas部署失败,无法migrate和启动项目
- Lesscode是否能够不依赖社区版Paas独立运行 HOT 1
- 应用创建Secret支持双写 HOT 1
- 支持语义化版本 HOT 2
- Django1.11.29 authenticate接口参数有更新
- paasv3预计什么时候发布? HOT 1
- 绑定私有版企业微信后,扫码认证报“系统出现异常”
- PaaS开发者中心中SaaS可见范围偶发报错 HOT 4
- PaaS源码下载问题 HOT 1
- 开发者中心查询日志通过时间筛选无效 HOT 1
- 开发者中心查询日志带正斜杠的字符串,精确查找可以找到,模糊查找反而为空 HOT 2
- PIP包需要更新,以便适配麒麟V10操作系统和ARM架构 HOT 3
- 多表单流程情形
- 本地启动login组件后访问报错 HOT 7
- esb示例组件报错 HOT 1
- readme.md存在链接失效
- PaaS 平台 esb组件缺少配置文件 HOT 1
- [前端] 登录页面支持显示密码 HOT 1
- 求助2.14.13的部署文档 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bk-paas.