2017-01-20 93 views
0

完成新手到web2py ...我想使表單底部的複選框僅在用戶是管理員用戶時有條件地出現。我如何處理該字段的名稱,以便可以更改非管理員用戶是否看不到它?Web2py有條件可讀的字段

我使用一個for循環有一個循環變量來引用,不知道,我需要它...

## create all tables needed by Technical Request Form 
db.define_table('technical_request', 
Field('uuid', 'string', default=uuid.uuid4(), readable=False, writable=False), 
Field('firstname', requires=IS_NOT_EMPTY(error_message='All Fields are Required!'), label="First Name"), 
Field('lastname', requires=IS_NOT_EMPTY(error_message='All Fields are Required!'), label="Last Name"), 
Field('phone', requires=IS_NOT_EMPTY(error_message='All Fields are Required!'), label="Phone Number"), 
Field('email', requires=IS_NOT_EMPTY(error_message='All Fields are Required!'), label="Email"),  
Field('issue_name', requires=IS_NOT_EMPTY(error_message='All Fields are Required!'),label="Subject"), 
Field('about_issue', 'text', requires=IS_NOT_EMPTY(error_message='All Fields are Required!'), label="Description of issue "), 
Field('issue', 'upload', label="Attach Files "), 
Field('request_processed', 'boolean', default=False, readable = False), 
auth.signature) 

for field in db.technical_request: 
    if field.name == 'request_processed' and auth.has_group_membership("systemadmin"): 
    field.readable = True 

enter image description here

這是複選框,我想隱藏。 ...

  • 跟進問題 *

有沒有一種方法可以有條件地添加字段?

回答

1

無需循環 - 你可以通過它的名字直接訪問場:

db.technical_request.request_processed.readable = auth.has_group_membership("systemadmin") 

或定義字段時,只是做:

Field('request_processed', 'boolean', default=False, 
     readable=auth.has_group_membership("systemadmin")) 
+0

我試過這種方法,但它似乎沒有工作。有沒有辦法有條件地添加該字段?在C我可以有一個預處理器指令'#ifdef'來跳轉代碼的某些部分... – fifamaniac04

+0

我也嘗試硬編碼可讀屬性爲'False',它仍然出現:| – fifamaniac04

+0

我的猜測是你正在使用內置的'appadmin'功能,它忽略了'可讀'和'可寫'屬性(像'admin'應用程序,它只適用於完全控制系統的人)。否則,一定有一個問題是你沒有顯示的代碼。您可以考慮使用[此功能](http://web2py.com/books/default/chapter/29/09/access-control#Application-Management-via-privileged-users--Experimental-)。 – Anthony