web2py - for循环和改变背景颜色的功能?

时间:2013-11-09 17:08:40

标签: python web2py

我正在尝试应用一些应用程序,我需要根据“严重性”,红色,黄色或绿色的“报告”来更改某些图像的背景颜色。

视图(index.html):

  

欢迎{{= auth.user.first_name}}

     

{{报告中的报告:}}

     

type =“text / css”> .eq_img {background-color:{{= bg_c​​olor(reports.severity)}(在样式标签中)

     

带有图片类的表= eq_img

控制器(default.py):

  

def equipment():

     

报告= db()。select(db.repo.ALL)

     

返回本地人()

模型(db.py):

  

db.define_table( '回购',

     
    

字段( '体', '文本',需要= IS_LENGTH(500,1),标记= “报告”),

         

字段('严重性',要求= IS_IN_SET(['绿色','黄色','红色'])),

         

字段('posted_on','datetime',可读= False,可写= False),

         

字段('posted_by','reference auth_user',writable = False),

  
     

def bg_c​​olor(严重性):

     
    

如果严重性==“红色”:

         

返回'red'

         

elif severity ==“Yellow”:

         

返回'黄色'

         

否则:

         

返回'绿色'

  

现在它始终返回列表中最后一个报告的颜色。我需要它来找到最严重的报告,如果不是红色,那么是黄色,然后是绿色。任何帮助非常感谢。

1 个答案:

答案 0 :(得分:0)

您要做的事情并不完全清楚,但是如果您想将.eq_img类的背景颜色设置为查询返回的所有记录中存在的最高严重性值,您可以执行类似的操作这样:

模特:

severities = ['Green', 'Yellow', 'Red']

db.define_table('repo',
    Field('body','text',requires=IS_LENGTH(500,1),label="report"),
    Field('severity', requires=IS_IN_SET(severities)),
    Field('posted_on','datetime', readable=False, writable=False),
    Field('posted_by','reference auth_user', writable=False))

在控制器中:

def equipment():
    reported = db().select(db.repo.ALL)
    max_severity = max([severities.index(r.severity) for r in reported])
    severity_color = severities[max_severity].lower()
    return dict(reported=reported, severity_color=severity_color)

在上面,max_severity是一个整数(0,1或2),对应于记录中找到的最大严重性级别。

在视图中:

.eq_img {background-color:{{=severity_color}};}

请注意,上述内容不应与原始代码中的for循环一致。