MJ2 : fix options
This commit is contained in:
@@ -2,7 +2,7 @@ from flask import Blueprint, render_template, request, jsonify, redirect, url_fo
|
||||
from flask_login import login_user, logout_user, login_required, current_user
|
||||
from werkzeug.security import generate_password_hash, check_password_hash
|
||||
from db import get_db, generate_clan_key
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timezone
|
||||
|
||||
auth = Blueprint('auth', __name__)
|
||||
|
||||
@@ -108,14 +108,13 @@ def logout():
|
||||
def options():
|
||||
conn = get_db()
|
||||
|
||||
# Load this user's clan (one clan per user for now)
|
||||
clan = conn.execute(
|
||||
'SELECT * FROM clans WHERE owner_id = ?', (current_user.id,)
|
||||
).fetchone()
|
||||
|
||||
members = []
|
||||
if clan:
|
||||
members = conn.execute(
|
||||
rows = conn.execute(
|
||||
'''SELECT cm.id, cm.player_id, cm.player_name, cm.joined_at,
|
||||
ts.updated_at
|
||||
FROM clan_members cm
|
||||
@@ -126,6 +125,24 @@ def options():
|
||||
(clan['id'],)
|
||||
).fetchall()
|
||||
|
||||
now = datetime.utcnow()
|
||||
for row in rows:
|
||||
is_online = False
|
||||
if row['updated_at']:
|
||||
try:
|
||||
last_seen = datetime.fromisoformat(row['updated_at'])
|
||||
if (now - last_seen).total_seconds() <= 150:
|
||||
is_online = True
|
||||
except Exception:
|
||||
pass
|
||||
members.append({
|
||||
'id': row['id'],
|
||||
'player_id': row['player_id'],
|
||||
'player_name': row['player_name'] or 'Άγνωστος',
|
||||
'joined_at': row['joined_at'][:10] if row['joined_at'] else '',
|
||||
'is_online': is_online
|
||||
})
|
||||
|
||||
conn.close()
|
||||
return render_template('options.html', clan=clan, members=members)
|
||||
|
||||
|
||||
@@ -192,23 +192,19 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for m in members %}
|
||||
{% set last_seen = m.updated_at %}
|
||||
{% if last_seen %}
|
||||
{% set diff = (now - last_seen) | int %}
|
||||
{% endif %}
|
||||
<tr>
|
||||
<td>
|
||||
<div class="player-name">{{ m.player_name or 'Άγνωστος' }}</div>
|
||||
<div class="player-name">{{ m.player_name }}</div>
|
||||
<div class="player-id">ID: {{ m.player_id }}</div>
|
||||
</td>
|
||||
<td>
|
||||
{% if m.updated_at and (now_ts - m.updated_at|string|int) < 150 %}
|
||||
{% if m.is_online %}
|
||||
<span class="status-online">● Online</span>
|
||||
{% else %}
|
||||
<span class="status-offline">● Offline</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td style="color:#8b949e; font-size:0.8rem;">{{ m.joined_at[:10] }}</td>
|
||||
<td style="color:#8b949e; font-size:0.8rem;">{{ m.joined_at }}</td>
|
||||
<td style="text-align:right;">
|
||||
<form method="POST" action="/auth/clan/remove-member/{{ m.player_id }}"
|
||||
onsubmit="return confirm('Αφαίρεση παίκτη {{ m.player_name }}?');">
|
||||
|
||||
Reference in New Issue
Block a user