superset详解(五)--视图生成

superset的权限和视图是不可分割的,下面我们来看看视图是怎么生成的。视图可以分为3类,菜单视图,普通视图(不生成菜单的视图,只添加链接),资源视图。
前2类视图是flaskappbuilder控制生成的,后一种视图是sqlalchemy控制生成的。


菜单视图/非菜单视图生成

appbuilder.add_view() 生成菜单视图
appbulier.add_view_no_menu()   生成没有菜单的视图

flask_appbuilder/security/manage.py
    def add_permissions_view(self, base_permissions, view_menu):
        view_menu_db = self.add_view_menu(view_menu)   # 把视图添加到视图表中
        pass

资源视图

superset的资源视图主要是数据库,数据表

数据库权限:
sqla.event.listen(Database, 'after_insert', set_perm)
sqla.event.listen(Database, 'after_update', set_perm)

def get_perm(self):
    return (
        '[{obj.database_name}].(id:{obj.id})').format(obj=self)  

sqlalchemy设置了插入和更新的监听事件,当这些时间发生的时候,就会把改资源对应的视图插入到数据表中。可以看到数据库的视图是由数据库的名字和它的ID组成的

数据表权限:
sa.event.listen(SqlaTable, 'after_insert', set_perm)
sa.event.listen(SqlaTable, 'after_update', set_perm)

def get_perm(self):
      return (
          '[{obj.database}].[{obj.table_name}]'
          '(id:{obj.id})').format(obj=self)

表资源视图的插入和数据库资源视图的插入机制一样,只是视图不一样,表资源的视图是由数据库的名字,表的名字和表的ID组成

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值