flask-admin: how to allow only super users can view the specified table column?

前端 未结 4 1474
粉色の甜心
粉色の甜心 2020-12-18 06:39

I\'ve built an app with a table called Project which is stored in sqlite, I want allow only super users can view the approve colum

4条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-18 07:14

    class ProjectView(sqla.ModelView):
    
      def inaccessible_callback(self, name, **kwargs):
         if current_user.is_authenticated:
            abort(403)
         else:
            return redirect(url_for('security.login', next=request.url))
    
      @property
      def _form_edit_rules(self):
          return rules.RuleSet(self, self.form_rules)
    
      @_form_edit_rules.setter
      def _form_edit_rules(self, value):
          pass
    
      @property
      def _form_create_rules(self):
          return rules.RuleSet(self, self.form_rules)
    
      @_form_create_rules.setter
      def _form_create_rules(self, value):
          pass
    
      @property
      def form_rules(self):
          form_rules = [
              rules.FieldSet(('team'), 'Personal Info'),
              rules.Header('Project Info'),
              rules.Field('project_name')
          ]
          if not has_app_context() or current_user.has_role('superuser'):
              form_rules.append('approve')
          form_rules.append(rules.Container('rule_demo.wrap', 
              rules.Field('notes')))
          return form_rules
    

提交回复
热议问题