fix world

This commit is contained in:
2026-05-03 14:19:34 +03:00
parent 11f30f4c6a
commit cf23f38a6e
4 changed files with 62 additions and 27 deletions

View File

@@ -127,12 +127,13 @@ def options():
if clan:
rows = conn.execute(
'''SELECT cm.id, cm.player_id, cm.player_name, cm.world_id, cm.joined_at, cm.features,
ts.updated_at
MAX(ts.updated_at) as updated_at
FROM clan_members cm
LEFT JOIN town_state ts ON ts.player_id = cm.player_id
AND ts.world_id = cm.world_id
WHERE cm.clan_id = ?
GROUP BY cm.player_id
ORDER BY cm.joined_at DESC''',
GROUP BY cm.player_id, cm.world_id
ORDER BY cm.player_name ASC, cm.world_id ASC''',
(clan['id'],)
).fetchall()
@@ -212,17 +213,17 @@ def regenerate_key():
return redirect(url_for('auth.options'))
@auth.route('/auth/clan/remove-member/<player_id>', methods=['POST'])
@auth.route('/auth/clan/remove-member/<player_id>/<path:world_id>', methods=['POST'])
@login_required
def remove_member(player_id):
def remove_member(player_id, world_id):
conn = get_db()
clan = conn.execute(
'SELECT id FROM clans WHERE owner_id = ?', (current_user.id,)
).fetchone()
if clan:
conn.execute(
'DELETE FROM clan_members WHERE clan_id = ? AND player_id = ?',
(clan['id'], player_id)
'DELETE FROM clan_members WHERE clan_id = ? AND player_id = ? AND world_id = ?',
(clan['id'], player_id, world_id)
)
conn.commit()
conn.close()
@@ -232,12 +233,12 @@ def remove_member(player_id):
# ------------------------------------------------------------------
# POST /auth/clan/update-features/<player_id>
# ------------------------------------------------------------------
@auth.route('/auth/clan/update-features/<player_id>', methods=['POST'])
@auth.route('/auth/clan/update-features/<player_id>/<path:world_id>', methods=['POST'])
@login_required
def update_member_features(player_id):
farm = 'farm' if request.form.get('farm') else None
admin = 'admin' if request.form.get('admin') else None
atk_planner = 'attack_planner' if request.form.get('attack_planner') else None
def update_member_features(player_id, world_id):
farm = 'farm' if request.form.get('farm') else None
admin = 'admin' if request.form.get('admin') else None
atk_planner = 'attack_planner' if request.form.get('attack_planner') else None
atk_planner_admin = 'attack_planner_admin' if request.form.get('attack_planner_admin') else None
features = ','.join(f for f in [farm, admin, atk_planner, atk_planner_admin] if f) or ''
@@ -248,8 +249,8 @@ def update_member_features(player_id):
).fetchone()
if clan:
conn.execute(
'UPDATE clan_members SET features = ? WHERE clan_id = ? AND player_id = ?',
(features, clan['id'], player_id)
'UPDATE clan_members SET features = ? WHERE clan_id = ? AND player_id = ? AND world_id = ?',
(features, clan['id'], player_id, world_id)
)
conn.commit()
conn.close()