0

「重大度」、赤、黄、または緑で作成された「レポート」に応じて、一部の画像の背景色を変更する必要があるアプリケーションを作成しようとしています。

ビュー (index.html):

ようこそ {{=auth.user.first_name}}

{{reported のレポートの場合:}}

type="text/css">.eq_img {background-color:{{=bg_color(reports.severity)} (スタイル タグ内)

画像を含むテーブル クラス = eq_img

コントローラー (default.py):

デフ機器():

報告 = db().select(db.repo.ALL)

ローカルを返す()

モデル (db.py):

db.define_table('レポ',

Field('body','text',requires=IS_LENGTH(500,1),label="report"),

Field('severity', requires=IS_IN_SET(['Green', 'Yellow', 'Red'])),

Field('posted_on','datetime', readable=False, writable=False),

Field('posted_by','reference auth_user', writable=False),

def bg_c​​olor(重大度):

重大度 == "赤" の場合:

「赤」を返す

elif 重大度 == 「黄色」:

「黄色」を返す

そうしないと:

「緑」を返す

これで、常にリストの最後のレポートの色が返されます。最も重大なレポートを見つけるために必要です。赤でなくても、次に黄色、次に緑です。どんな助けでも大歓迎です。

4

1 に答える 1

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 ループに入れないことに注意してください。

于 2013-11-09T20:25:27.060 に答える