feat: 优化
This commit is contained in:
@@ -61,10 +61,11 @@ def create_app(config_name='default'):
|
|||||||
app.logger.info('PT黑名单系统启动')
|
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_status'] = translate_status
|
||||||
app.jinja_env.filters['translate_reason'] = translate_reason
|
app.jinja_env.filters['translate_reason'] = translate_reason
|
||||||
app.jinja_env.filters['translate_reasons_list'] = translate_reasons_list
|
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
|
from .routes import main as main_blueprint
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
"""Jinja2模板过滤器"""
|
"""Jinja2模板过滤器"""
|
||||||
|
from datetime import timedelta
|
||||||
|
|
||||||
STATUS_TRANSLATIONS = {
|
STATUS_TRANSLATIONS = {
|
||||||
'pending': '待审核',
|
'pending': '待审核',
|
||||||
@@ -45,3 +46,9 @@ def translate_reasons_list(reasons):
|
|||||||
if not reasons:
|
if not reasons:
|
||||||
return []
|
return []
|
||||||
return [REASON_TRANSLATIONS.get(r, r) for r in reasons]
|
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)
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
{{ appeal.status | translate_status }}
|
{{ appeal.status | translate_status }}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</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>
|
<td>
|
||||||
<a href="{{ url_for('main.appeal_detail', appeal_id=appeal.id) }}" class="btn btn-sm btn-outline-primary">查看详情</a>
|
<a href="{{ url_for('main.appeal_detail', appeal_id=appeal.id) }}" class="btn btn-sm btn-outline-primary">查看详情</a>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
<small class="text-muted">{{ user.email }}</small>
|
<small class="text-muted">{{ user.email }}</small>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ user.pt_site }} / {{ user.uid }}</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 %}
|
{% if user.id == 1 %}
|
||||||
<td>
|
<td>
|
||||||
<div>角色: <span class="badge bg-danger">{{ user.role }}</span></div>
|
<div>角色: <span class="badge bg-danger">{{ user.role }}</span></div>
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
<td>{{ user.email }}</td>
|
<td>{{ user.email }}</td>
|
||||||
<td>{{ user.pt_site }}</td>
|
<td>{{ user.pt_site }}</td>
|
||||||
<td>{{ user.uid }}</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>
|
<td>
|
||||||
<form action="{{ url_for('main.approve_user', user_id=user.id) }}" method="POST" class="d-inline">
|
<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>
|
<button type="submit" class="btn btn-sm btn-success">批准</button>
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
<span><strong>#{{ r.id }}</strong> - {{ r.reason_category | translate_reason }}</span>
|
<span><strong>#{{ r.id }}</strong> - {{ r.reason_category | translate_reason }}</span>
|
||||||
<span class="badge bg-secondary">{{ r.status | translate_status }}</span>
|
<span class="badge bg-secondary">{{ r.status | translate_status }}</span>
|
||||||
</div>
|
</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>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
@@ -95,7 +95,7 @@
|
|||||||
<div class="p-2 bg-light rounded">
|
<div class="p-2 bg-light rounded">
|
||||||
<p class="small mb-0">{{ comment.body | safe }}</p>
|
<p class="small mb-0">{{ comment.body | safe }}</p>
|
||||||
</div>
|
</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>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>{{ report.reporter.username }}</td>
|
<td>{{ report.reporter.username }}</td>
|
||||||
<td><span class="badge bg-info text-dark">{{ report.status | translate_status }}</span></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>
|
<td><a href="{{ url_for('main.report_detail', report_id=report.id) }}" class="btn btn-sm btn-outline-primary">查看详情</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@
|
|||||||
<div class="message user-message mb-3">
|
<div class="message user-message mb-3">
|
||||||
<div class="message-header">
|
<div class="message-header">
|
||||||
<strong>{{ appeal.appealer.username }}</strong>
|
<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>
|
||||||
<div class="message-body">
|
<div class="message-body">
|
||||||
<p class="fw-bold">[初始申诉理由]</p>
|
<p class="fw-bold">[初始申诉理由]</p>
|
||||||
@@ -82,10 +82,10 @@
|
|||||||
<div class="message-header">
|
<div class="message-header">
|
||||||
{% if message.author.role == 'admin' %}
|
{% if message.author.role == 'admin' %}
|
||||||
<strong>{{ message.author.username }} (管理员)</strong>
|
<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 %}
|
{% else %}
|
||||||
<strong>{{ message.author.username }}</strong>
|
<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 %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="message-body">
|
<div class="message-body">
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
未知
|
未知
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</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>
|
</ul>
|
||||||
<p class="text-muted small mt-3">为保护隐私,仅展示必要的脱敏信息。具体违规描述不对外公开。</p>
|
<p class="text-muted small mt-3">为保护隐私,仅展示必要的脱敏信息。具体违规描述不对外公开。</p>
|
||||||
|
|
||||||
|
|||||||
@@ -31,8 +31,8 @@
|
|||||||
{{ appeal.status | translate_status }}
|
{{ appeal.status | translate_status }}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ appeal.created_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.strftime('%Y-%m-%d %H:%M') }}</td>
|
<td>{{ (appeal.updated_at | to_beijing_time).strftime('%Y-%m-%d %H:%M') }}</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ url_for('main.appeal_detail', appeal_id=appeal.id) }}" class="btn btn-sm btn-outline-primary">查看详情</a>
|
<a href="{{ url_for('main.appeal_detail', appeal_id=appeal.id) }}" class="btn btn-sm btn-outline-primary">查看详情</a>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
{{ report.status | translate_status }}
|
{{ report.status | translate_status }}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</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>
|
<td>
|
||||||
<a href="{{ url_for('main.report_detail', report_id=report.id) }}" class="btn btn-sm btn-outline-primary">查看详情</a>
|
<a href="{{ url_for('main.report_detail', report_id=report.id) }}" class="btn btn-sm btn-outline-primary">查看详情</a>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
Reference in New Issue
Block a user