|
13 | 13 | from markupsafe import Markup |
14 | 14 | from flask import url_for, abort, redirect, Response |
15 | 15 | from flask_login import current_user |
| 16 | +from sqlalchemy.orm import defer |
16 | 17 |
|
17 | 18 | class AdminOnlyModelView(ModelView): |
18 | 19 | """Restrict admin views to authenticated admin users only.""" |
@@ -135,23 +136,30 @@ class TaskItemView(AdminOnlyModelView): |
135 | 136 | 'prompt': lambda v, c, m, p: m.prompt[:100] + '...' if m.prompt and len(m.prompt) > 100 else m.prompt, |
136 | 137 | 'view_plan': lambda v, c, m, p: Markup( |
137 | 138 | f'<a href="/viewplan?run_id={m.id}" target="_blank">View</a>' |
138 | | - ) if m.generated_report_html else '—', |
| 139 | + ) if m.has_generated_report_html else '—', |
139 | 140 | 'generated_report_html': lambda v, c, m, p: Markup( |
140 | | - f'<a href="{url_for("download_task_report", task_id=str(m.id))}">Download ({len(m.generated_report_html.encode("utf-8")) / 1024:.1f} KB)</a>' |
141 | | - ) if m.generated_report_html else '—', |
| 141 | + f'<a href="{url_for("download_task_report", task_id=str(m.id))}">Download</a>' |
| 142 | + ) if m.has_generated_report_html else '—', |
142 | 143 | 'run_zip_snapshot': lambda v, c, m, p: Markup( |
143 | | - f'<a href="{url_for("download_task_run_zip", task_id=str(m.id))}">Download ({len(m.run_zip_snapshot) / 1024:.1f} KB)</a>' |
144 | | - ) if m.run_zip_snapshot else '—', |
| 144 | + f'<a href="{url_for("download_task_run_zip", task_id=str(m.id))}">Download</a>' |
| 145 | + ) if m.has_run_zip_snapshot else '—', |
145 | 146 | 'run_activity_overview_json': lambda v, c, m, p: ( |
146 | 147 | json.dumps(m.run_activity_overview_json, ensure_ascii=False)[:120] + '...' |
147 | 148 | if m.run_activity_overview_json and len(json.dumps(m.run_activity_overview_json, ensure_ascii=False)) > 120 |
148 | 149 | else (json.dumps(m.run_activity_overview_json, ensure_ascii=False) if m.run_activity_overview_json else '—') |
149 | 150 | ), |
150 | 151 | 'run_track_activity': lambda v, c, m, p: Markup( |
151 | | - f'<a href="{url_for("download_task_track_activity", task_id=str(m.id))}">Download ({((m.run_track_activity_bytes if m.run_track_activity_bytes is not None else len(m.run_track_activity_jsonl.encode("utf-8"))) / 1024):.1f} KB)</a>' |
152 | | - ) if m.run_track_activity_jsonl else '—', |
| 152 | + f'<a href="{url_for("download_task_track_activity", task_id=str(m.id))}">Download</a>' |
| 153 | + ) if m.has_run_track_activity_jsonl else '—', |
153 | 154 | } |
154 | 155 |
|
| 156 | + def get_query(self): |
| 157 | + return super().get_query().options( |
| 158 | + defer(self.model.generated_report_html), |
| 159 | + defer(self.model.run_zip_snapshot), |
| 160 | + defer(self.model.run_track_activity_jsonl), |
| 161 | + ) |
| 162 | + |
155 | 163 | class NonceItemView(AdminOnlyModelView): |
156 | 164 | """Custom ModelView for NonceItem""" |
157 | 165 | def __init__(self, model, *args, **kwargs): |
|
0 commit comments