Fix: Partner-Tab — is_founder/is_partner in Admin-Users-Liste + Checkboxen vorausfüllen + founder_number in /me, SW by-v554
This commit is contained in:
parent
c2a5fbba7d
commit
47c0590364
5 changed files with 15 additions and 5 deletions
|
|
@ -87,7 +87,7 @@ def get_current_user(
|
||||||
user_id = int(payload["sub"])
|
user_id = int(payload["sub"])
|
||||||
with db() as conn:
|
with db() as conn:
|
||||||
row = conn.execute(
|
row = conn.execute(
|
||||||
"SELECT id, email, name, rolle, is_premium, is_moderator, is_banned, ban_reason, is_social_media, notes_ki_enabled, breeder_status, is_founder, is_partner FROM users WHERE id=?",
|
"SELECT id, email, name, rolle, is_premium, is_moderator, is_banned, ban_reason, is_social_media, notes_ki_enabled, breeder_status, is_founder, is_partner, founder_number FROM users WHERE id=?",
|
||||||
(user_id,)
|
(user_id,)
|
||||||
).fetchone()
|
).fetchone()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -296,6 +296,7 @@ async def list_users(
|
||||||
rows = conn.execute(f"""
|
rows = conn.execute(f"""
|
||||||
SELECT u.id, u.name, {_email_col}, u.rolle, u.is_premium,
|
SELECT u.id, u.name, {_email_col}, u.rolle, u.is_premium,
|
||||||
u.is_moderator, u.is_banned, u.ban_reason,
|
u.is_moderator, u.is_banned, u.ban_reason,
|
||||||
|
u.is_founder, u.is_partner, u.founder_number,
|
||||||
u.created_at, u.last_login,
|
u.created_at, u.last_login,
|
||||||
(SELECT COUNT(*) FROM dogs d WHERE d.user_id=u.id) AS dog_count,
|
(SELECT COUNT(*) FROM dogs d WHERE d.user_id=u.id) AS dog_count,
|
||||||
(SELECT COUNT(*) FROM forum_threads t WHERE t.user_id=u.id AND t.is_deleted=0) AS thread_count,
|
(SELECT COUNT(*) FROM forum_threads t WHERE t.user_id=u.id AND t.is_deleted=0) AS thread_count,
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
Router, State-Management, Navigation, Initialisierung.
|
Router, State-Management, Navigation, Initialisierung.
|
||||||
============================================================ */
|
============================================================ */
|
||||||
|
|
||||||
const APP_VER = '530'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
const APP_VER = '531'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
||||||
const APP_VERSION = '1.1.1'; // ← semantische Version, wird bei make release gesetzt
|
const APP_VERSION = '1.1.1'; // ← semantische Version, wird bei make release gesetzt
|
||||||
const IS_STAGING = location.hostname === 'staging.banyaro.app';
|
const IS_STAGING = location.hostname === 'staging.banyaro.app';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1969,18 +1969,27 @@ window.Page_admin = (() => {
|
||||||
}
|
}
|
||||||
grantResult.innerHTML = users.map(u => `
|
grantResult.innerHTML = users.map(u => `
|
||||||
<div class="adm-grant-user" data-id="${u.id}" data-name="${u.name}"
|
<div class="adm-grant-user" data-id="${u.id}" data-name="${u.name}"
|
||||||
|
data-founder="${u.is_founder||0}" data-partner="${u.is_partner||0}"
|
||||||
style="padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);
|
style="padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);
|
||||||
cursor:pointer;background:var(--c-surface-2);margin-bottom:2px;
|
cursor:pointer;background:var(--c-surface-2);margin-bottom:2px;
|
||||||
font-size:var(--text-sm);display:flex;justify-content:space-between">
|
font-size:var(--text-sm);display:flex;justify-content:space-between">
|
||||||
<span><strong>${u.name}</strong></span>
|
<span><strong>${u.name}</strong></span>
|
||||||
<span style="color:var(--c-text-muted);font-size:var(--text-xs)">${u.rolle}</span>
|
<span style="color:var(--c-text-muted);font-size:var(--text-xs)">
|
||||||
|
${u.rolle}${u.is_founder ? ' · ⭐' : ''}${u.is_partner ? ' · 🤝' : ''}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
`).join('');
|
`).join('');
|
||||||
grantResult.querySelectorAll('.adm-grant-user').forEach(div => {
|
grantResult.querySelectorAll('.adm-grant-user').forEach(div => {
|
||||||
div.addEventListener('click', () => {
|
div.addEventListener('click', () => {
|
||||||
_grantUserId = parseInt(div.dataset.id);
|
_grantUserId = parseInt(div.dataset.id);
|
||||||
searchInput.value = div.dataset.name;
|
searchInput.value = div.dataset.name;
|
||||||
grantResult.innerHTML = `<p style="font-size:var(--text-xs);color:var(--c-success,#16a34a)">✓ ${div.dataset.name} ausgewählt</p>`;
|
// Aktuellen Status in Checkboxen setzen
|
||||||
|
const form = el.querySelector('#adm-partner-grant');
|
||||||
|
if (form) {
|
||||||
|
form.querySelector('[name="is_founder"]').checked = div.dataset.founder === '1';
|
||||||
|
form.querySelector('[name="is_partner"]').checked = div.dataset.partner === '1';
|
||||||
|
}
|
||||||
|
grantResult.innerHTML = `<p style="font-size:var(--text-xs);color:var(--c-success,#16a34a)">✓ ${div.dataset.name} ausgewählt${div.dataset.founder==='1' ? ' · ⭐ Gründer' : ''}${div.dataset.partner==='1' ? ' · 🤝 Partner' : ''}</p>`;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
Offline-Cache + Push Notifications + Tile-Cache
|
Offline-Cache + Push Notifications + Tile-Cache
|
||||||
============================================================ */
|
============================================================ */
|
||||||
|
|
||||||
const CACHE_VERSION = 'by-v553';
|
const CACHE_VERSION = 'by-v554';
|
||||||
const CACHE_STATIC = `${CACHE_VERSION}-static`;
|
const CACHE_STATIC = `${CACHE_VERSION}-static`;
|
||||||
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
|
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
|
||||||
const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache
|
const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue