flask-admin:如何根据个人用户而不是角色自定义视图?
flask-admin: how to customize the view according to the individual user instead of the role?
众所周知,flask-admin 允许具有相同角色的用户具有相同的权限。但是,在我的应用程序中,我只想限制创建查询的用户查看和编辑。
例如,有很多用户具有相同的角色,称为"developers",he/she创建代码审查并等待批准。
下图显示开发人员 Gina 可以在列表中看到开发人员 Bill 的项目(这是不需要的)。我想要实现的只有 Gina 和审阅者(Wesker 和 Steve 在这里)可以在列表中查看该项目。
我把代码放上了here
,如果不合适我会删除 link。提前致谢。
您必须创建另一个用户角色才能实现您的目标。它将帮助您节省时间,并且您可以轻松地专门为特定的个人或组自定义视图。
请完成这个link
根据您提供的信息,解决方案可能如下所示
Rewrite/extend 收集 Project
条记录的逻辑,因此只有 属于当前用户 的记录。演示的示例可能如下所示:
伪sql
SELECT team, name, project_name, version, ... FROM projects where name = current_user.name
Rewrite/extend 负责保存记录的逻辑,以便验证 current_user
是否允许对 进行更改给定的项目记录
覆盖 ModelView,您可以过滤结果以显示记录的用户自己的结果:
def get_query(self):
return self.session.query(self.model).filter(self.model.user==current_user)
def get_count_query(self):
return self.session.query(func.count('*')).filter(self.model.user==current_user)
您可以在此处找到更多信息:
Flask-Admin default filters
众所周知,flask-admin 允许具有相同角色的用户具有相同的权限。但是,在我的应用程序中,我只想限制创建查询的用户查看和编辑。
例如,有很多用户具有相同的角色,称为"developers",he/she创建代码审查并等待批准。
下图显示开发人员 Gina 可以在列表中看到开发人员 Bill 的项目(这是不需要的)。我想要实现的只有 Gina 和审阅者(Wesker 和 Steve 在这里)可以在列表中查看该项目。
我把代码放上了here ,如果不合适我会删除 link。提前致谢。
您必须创建另一个用户角色才能实现您的目标。它将帮助您节省时间,并且您可以轻松地专门为特定的个人或组自定义视图。
请完成这个link
根据您提供的信息,解决方案可能如下所示
Rewrite/extend 收集
Project
条记录的逻辑,因此只有 属于当前用户 的记录。演示的示例可能如下所示:伪sql
SELECT team, name, project_name, version, ... FROM projects where name = current_user.name
Rewrite/extend 负责保存记录的逻辑,以便验证
current_user
是否允许对 进行更改给定的项目记录
覆盖 ModelView,您可以过滤结果以显示记录的用户自己的结果:
def get_query(self):
return self.session.query(self.model).filter(self.model.user==current_user)
def get_count_query(self):
return self.session.query(func.count('*')).filter(self.model.user==current_user)
您可以在此处找到更多信息: Flask-Admin default filters