Fixes and new ai model
This commit is contained in:
@@ -214,6 +214,10 @@ def index():
|
||||
@app.route("/review/<int:task_id>")
|
||||
def review_task(task_id):
|
||||
"""Detail view: show task info + embedded video player."""
|
||||
return_page = request.args.get("page", 1, type=int) or 1
|
||||
return_page = max(return_page, 1)
|
||||
return_queue_url = "/" if return_page == 1 else f"/?page={return_page}"
|
||||
|
||||
try:
|
||||
data = api_get(f"task/{task_id}")
|
||||
if not data or not data.get("id"):
|
||||
@@ -240,7 +244,11 @@ def review_task(task_id):
|
||||
except (json.JSONDecodeError, TypeError):
|
||||
video_obj["prev_results"] = {}
|
||||
|
||||
return render_template_string(_REVIEW_TEMPLATE, video=video_obj)
|
||||
return render_template_string(
|
||||
_REVIEW_TEMPLATE,
|
||||
video=video_obj,
|
||||
return_queue_url=return_queue_url,
|
||||
)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -411,7 +419,7 @@ _INDEX_TEMPLATE = """
|
||||
<td><span class="badge">{{ t.task_type }}</span></td>
|
||||
<td>{{ t.status }}</td>
|
||||
<td>{{ t.created_at|string|truncate(19, True, '') if t.created_at else '—' }}</td>
|
||||
<td><a href="/review/{{ t.id }}" class="btn">Review</a></td>
|
||||
<td><a href="{{ url_for('review_task', task_id=t.id, page=page) }}" class="btn">Review</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
@@ -464,7 +472,7 @@ _REVIEW_TEMPLATE = """
|
||||
<div id="flash"></div>
|
||||
<div class="header">
|
||||
<h1>VideoDetect</h1>
|
||||
<a href="/">« Back to queue</a>
|
||||
<a href="{{ return_queue_url }}">« Back to queue</a>
|
||||
</div>
|
||||
<div class="container">
|
||||
{% if video.prev_results and video.prev_results.review_verdict %}
|
||||
@@ -505,6 +513,8 @@ _REVIEW_TEMPLATE = """
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const returnQueueUrl = {{ return_queue_url|tojson }};
|
||||
|
||||
async function submitVerdict(verdict) {
|
||||
setActionButtonsDisabled(true);
|
||||
showFlash('Submitting verdict...', '#007bff');
|
||||
@@ -518,7 +528,7 @@ async function submitVerdict(verdict) {
|
||||
const body = await resp.json().catch(() => ({}));
|
||||
if (resp.ok) {
|
||||
showFlash('Verdict submitted', '#28a745');
|
||||
setTimeout(() => location.href = '/', 1000);
|
||||
setTimeout(() => location.href = returnQueueUrl, 1000);
|
||||
} else {
|
||||
alert(body.error || 'Submission failed');
|
||||
setActionButtonsDisabled(false);
|
||||
@@ -538,7 +548,7 @@ async function skipTask() {
|
||||
const resp = await fetch(`/api/review/skip/{{ video.id }}`, {method: 'POST'});
|
||||
if (resp.ok) {
|
||||
showFlash('Task skipped, returned to queue', '#6c757d');
|
||||
setTimeout(() => location.href = '/', 1000);
|
||||
setTimeout(() => location.href = returnQueueUrl, 1000);
|
||||
} else {
|
||||
alert('Skip failed');
|
||||
setActionButtonsDisabled(false);
|
||||
|
||||
Reference in New Issue
Block a user