2017-05-08 1 views
0

나는 아래의 클래스를 사용하여 사용자가 등록 후 자신의 프로파일을 편집 할 수있게했으며 잘 작동합니다. 나는 get_queryget_count_query을 사용하여 이것을 달성했다.flask admin : 현재 사용자의 ID와 역할에 따라 쿼리를 작성하는 방법은 무엇입니까?

현재 사용자가 관리자 인 인 경우 어떻게하면 사용자 프로필 만보기보다는 모든 사용자의 프로필을 볼 수 있도록 사용자 정의 할 수 있습니까? 미리 감사드립니다.

from flask_admin.contrib.sqla.view import ModelView, func 

class User(db.Model, UserMixin): 
    id = db.Column(db.Integer, primary_key=True) 
    first_name = db.Column(db.String(255)) 
    last_name = db.Column(db.String(255)) 
    email = db.Column(db.String(255), unique=True) 
    password = db.Column(db.String(255)) 

    def __str__(self): 
    return self.email 

class UserView(ModelView): 
    """ 
    Restrict only the current user can see his/her own profile 
    """ 
    def get_query(self): 
     return self.session.query(self.model).filter(self.model.id==current_user.id) 
    def get_count_query(self): 
     return self.session.query(func.count('*')).filter(self.model.id==current_user.id) 

답변

3

다른 사용자 정의 ModelView을 관리자 용으로 정의 할 수 있습니다. 예를 들어 :

class UserViewForAdmin(ModelView): 

    def is_accessible(self): 
     return current_user.has_role("admin") 
    def inaccessible_callback(self, name, **kwargs): 
     return redirect(url_for("security.login", next=request.url)) 

    pass 

admin = Admin(name="Flask-Admin Example") 

admin.add_view(UserView(User, db.session, name="Profile") 
admin.add_view(UserViewForAdmin(User, db.session, name="UserList", endpoint="users") 

(가) 예입니다 당신이 사용자 관리를 할 Flask-Security를 사용하는 가정합니다.

+0

감사합니다. 매력적이었습니다. – Samoth

관련 문제