feat: 优化

This commit is contained in:
DengDai
2025-11-28 09:08:53 +08:00
parent d71e46ecd0
commit c681560f73
11 changed files with 22 additions and 14 deletions

View File

@@ -61,10 +61,11 @@ def create_app(config_name='default'):
app.logger.info('PT黑名单系统启动')
# 注册自定义过滤器
from .filters import translate_status, translate_reason, translate_reasons_list
from .filters import translate_status, translate_reason, translate_reasons_list, to_beijing_time
app.jinja_env.filters['translate_status'] = translate_status
app.jinja_env.filters['translate_reason'] = translate_reason
app.jinja_env.filters['translate_reasons_list'] = translate_reasons_list
app.jinja_env.filters['to_beijing_time'] = to_beijing_time
# 注册蓝图
from .routes import main as main_blueprint

View File

@@ -1,4 +1,5 @@
"""Jinja2模板过滤器"""
from datetime import timedelta
STATUS_TRANSLATIONS = {
'pending': '待审核',
@@ -45,3 +46,9 @@ def translate_reasons_list(reasons):
if not reasons:
return []
return [REASON_TRANSLATIONS.get(r, r) for r in reasons]
def to_beijing_time(utc_dt):
"""UTC时间转北京时间UTC+8"""
if utc_dt is None:
return None
return utc_dt + timedelta(hours=8)

View File

@@ -34,7 +34,7 @@
{{ appeal.status | translate_status }}
</span>
</td>
<td>{{ appeal.updated_at.strftime('%Y-%m-%d %H:%M') }}</td>
<td>{{ (appeal.updated_at | to_beijing_time).strftime('%Y-%m-%d %H:%M') }}</td>
<td>
<a href="{{ url_for('main.appeal_detail', appeal_id=appeal.id) }}" class="btn btn-sm btn-outline-primary">查看详情</a>
</td>

View File

@@ -30,7 +30,7 @@
<small class="text-muted">{{ user.email }}</small>
</td>
<td>{{ user.pt_site }} / {{ user.uid }}</td>
<td>{{ user.created_at.strftime('%Y-%m-%d') }}</td>
<td>{{ (user.created_at | to_beijing_time).strftime('%Y-%m-%d') }}</td>
{% if user.id == 1 %}
<td>
<div>角色: <span class="badge bg-danger">{{ user.role }}</span></div>

View File

@@ -27,7 +27,7 @@
<td>{{ user.email }}</td>
<td>{{ user.pt_site }}</td>
<td>{{ user.uid }}</td>
<td>{{ user.created_at.strftime('%Y-%m-%d %H:%M') }}</td>
<td>{{ (user.created_at | to_beijing_time).strftime('%Y-%m-%d %H:%M') }}</td>
<td>
<form action="{{ url_for('main.approve_user', user_id=user.id) }}" method="POST" class="d-inline">
<button type="submit" class="btn btn-sm btn-success">批准</button>

View File

@@ -74,7 +74,7 @@
<span><strong>#{{ r.id }}</strong> - {{ r.reason_category | translate_reason }}</span>
<span class="badge bg-secondary">{{ r.status | translate_status }}</span>
</div>
<small class="text-muted">{{ r.created_at.strftime('%Y-%m-%d') }} | 举报人: {{ r.reporter.username }}</small>
<small class="text-muted">{{ (r.created_at | to_beijing_time).strftime('%Y-%m-%d') }} | 举报人: {{ r.reporter.username }}</small>
</a>
{% endfor %}
</div>
@@ -95,7 +95,7 @@
<div class="p-2 bg-light rounded">
<p class="small mb-0">{{ comment.body | safe }}</p>
</div>
<small class="text-muted">{{ comment.created_at.strftime('%Y-%m-%d %H:%M') }}</small>
<small class="text-muted">{{ (comment.created_at | to_beijing_time).strftime('%Y-%m-%d %H:%M') }}</small>
</div>
</div>
{% else %}

View File

@@ -30,7 +30,7 @@
</td>
<td>{{ report.reporter.username }}</td>
<td><span class="badge bg-info text-dark">{{ report.status | translate_status }}</span></td>
<td>{{ report.created_at.strftime('%Y-%m-%d %H:%M') }}</td>
<td>{{ (report.created_at | to_beijing_time).strftime('%Y-%m-%d %H:%M') }}</td>
<td><a href="{{ url_for('main.report_detail', report_id=report.id) }}" class="btn btn-sm btn-outline-primary">查看详情</a></td>
</tr>
{% else %}

View File

@@ -68,7 +68,7 @@
<div class="message user-message mb-3">
<div class="message-header">
<strong>{{ appeal.appealer.username }}</strong>
<small>{{ appeal.created_at.strftime('%Y-%m-%d %H:%M') }}</small>
<small>{{ (appeal.created_at | to_beijing_time).strftime('%Y-%m-%d %H:%M') }}</small>
</div>
<div class="message-body">
<p class="fw-bold">[初始申诉理由]</p>
@@ -82,10 +82,10 @@
<div class="message-header">
{% if message.author.role == 'admin' %}
<strong>{{ message.author.username }} (管理员)</strong>
<small>{{ message.created_at.strftime('%Y-%m-%d %H:%M') }}</small>
<small>{{ (message.created_at | to_beijing_time).strftime('%Y-%m-%d %H:%M') }}</small>
{% else %}
<strong>{{ message.author.username }}</strong>
<small>{{ message.created_at.strftime('%Y-%m-%d %H:%M') }}</small>
<small>{{ (message.created_at | to_beijing_time).strftime('%Y-%m-%d %H:%M') }}</small>
{% endif %}
</div>
<div class="message-body">

View File

@@ -57,7 +57,7 @@
未知
{% endif %}
</li>
<li class="list-group-item"><strong>记录时间:</strong> {{ search_result.created_at.strftime('%Y-%m-%d') }}</li>
<li class="list-group-item"><strong>记录时间:</strong> {{ (search_result.created_at | to_beijing_time).strftime('%Y-%m-%d') }}</li>
</ul>
<p class="text-muted small mt-3">为保护隐私,仅展示必要的脱敏信息。具体违规描述不对外公开。</p>

View File

@@ -31,8 +31,8 @@
{{ appeal.status | translate_status }}
</span>
</td>
<td>{{ appeal.created_at.strftime('%Y-%m-%d %H:%M') }}</td>
<td>{{ appeal.updated_at.strftime('%Y-%m-%d %H:%M') }}</td>
<td>{{ (appeal.created_at | to_beijing_time).strftime('%Y-%m-%d %H:%M') }}</td>
<td>{{ (appeal.updated_at | to_beijing_time).strftime('%Y-%m-%d %H:%M') }}</td>
<td>
<a href="{{ url_for('main.appeal_detail', appeal_id=appeal.id) }}" class="btn btn-sm btn-outline-primary">查看详情</a>
</td>

View File

@@ -36,7 +36,7 @@
{{ report.status | translate_status }}
</span>
</td>
<td>{{ report.created_at.strftime('%Y-%m-%d %H:%M') }}</td>
<td>{{ (report.created_at | to_beijing_time).strftime('%Y-%m-%d %H:%M') }}</td>
<td>
<a href="{{ url_for('main.report_detail', report_id=report.id) }}" class="btn btn-sm btn-outline-primary">查看详情</a>
</td>