flask-admin:如何根据个人用户而不是角色自定义视图?

时间:2017-04-22 03:07:59

标签: python flask flask-sqlalchemy flask-admin

众所周知,flask-admin允许具有相同角色的用户拥有相同的权限。但是,在我的应用中,我只想限制创建查询的用户进行查看和编辑。

例如,有许多用户具有相同的角色,名为"开发人员" ,他/她创建代码审核并等待批准。

下面的图片显示开发人员 Gina 可以在列表中看到开发人员比尔项目(这是不可取的)。我想要实现的只有Gina和评论者( Wesker Steve 这里)可以在列表中查看此项目。

我已经放了代码here 如果不合适,我会删除该链接。提前致谢。

enter image description here

3 个答案:

答案 0 :(得分:3)

重写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

答案 1 :(得分:0)

您必须创建另一个用户角色才能实现目标。它可以帮助您节省时间,并且您可以轻松地为特定个人或团体自定义视图。

请完成此link

答案 2 :(得分:0)

获得您提供的信息后,解决方案可能如下所示

  1. 重写/扩展收集Project记录的逻辑,以便只有属于当前用户的记录。演示的示例可能如下所示:

    伪SQL

    SELECT team, name, project_name, version, ... FROM projects where name = current_user.name

  2. 重写/扩展负责保存记录的逻辑,以便验证current_user 是否允许对给定的项目记录进行更改

    < / LI>