Jun 26 - Fix weekly websites disappear when checked

This commit is contained in:
2026-06-26 13:26:29 -04:00
parent 2a75d17301
commit a47335110c
+20 -18
View File
@@ -597,22 +597,23 @@ def get_today_checks(user_id: int):
JOIN websites w ON w.id = sw.website_id JOIN websites w ON w.id = sw.website_id
JOIN shift_users su ON su.shift_id = s.id AND su.user_id = %s JOIN shift_users su ON su.shift_id = s.id AND su.user_id = %s
LEFT JOIN shift_checks sc LEFT JOIN shift_checks sc
ON sc.website_id = w.id AND sc.user_id = %s AND DATE(sc.checked_at) = CURDATE() ON sc.id = (
SELECT sc2.id FROM shift_checks sc2
WHERE sc2.website_id = w.id AND sc2.user_id = %s
AND IF(w.check_type = 'weekly',
YEARWEEK(sc2.checked_at, 1) = YEARWEEK(CURDATE(), 1),
DATE(sc2.checked_at) = CURDATE())
ORDER BY sc2.checked_at DESC
LIMIT 1
)
WHERE s.is_active = 1 AND w.is_active = 1 WHERE s.is_active = 1 AND w.is_active = 1
AND LOCATE(CAST(DAYOFWEEK(CURDATE()) AS CHAR), s.days_of_week) > 0 AND LOCATE(CAST(DAYOFWEEK(CURDATE()) AS CHAR), s.days_of_week) > 0
AND (w.visibility = 'all' AND (w.visibility = 'all'
OR EXISTS (SELECT 1 FROM website_users wu WHERE wu.website_id=w.id AND wu.user_id=%s)) OR EXISTS (SELECT 1 FROM website_users wu WHERE wu.website_id=w.id AND wu.user_id=%s))
AND (w.check_type = 'daily'
OR (w.check_type = 'weekly'
AND NOT EXISTS (
SELECT 1 FROM shift_checks sc2
WHERE sc2.website_id=w.id AND sc2.user_id=%s
AND YEARWEEK(sc2.checked_at,1)=YEARWEEK(CURDATE(),1)
)))
GROUP BY w.id, sc.id, sc.checked_at, sc.user_note, sc.user_id GROUP BY w.id, sc.id, sc.checked_at, sc.user_note, sc.user_id
ORDER BY sort_order, w.name ORDER BY sort_order, w.name
""", """,
(user_id, user_id, user_id, user_id), (user_id, user_id, user_id),
) )
else: else:
cur.execute( cur.execute(
@@ -622,20 +623,21 @@ def get_today_checks(user_id: int):
sc.id AS check_id, sc.checked_at, sc.user_note, sc.user_id AS checked_by_id sc.id AS check_id, sc.checked_at, sc.user_note, sc.user_id AS checked_by_id
FROM websites w FROM websites w
LEFT JOIN shift_checks sc LEFT JOIN shift_checks sc
ON sc.website_id=w.id AND sc.user_id=%s AND DATE(sc.checked_at)=CURDATE() ON sc.id = (
SELECT sc2.id FROM shift_checks sc2
WHERE sc2.website_id = w.id AND sc2.user_id = %s
AND IF(w.check_type = 'weekly',
YEARWEEK(sc2.checked_at, 1) = YEARWEEK(CURDATE(), 1),
DATE(sc2.checked_at) = CURDATE())
ORDER BY sc2.checked_at DESC
LIMIT 1
)
WHERE w.is_active=1 WHERE w.is_active=1
AND (w.visibility='all' AND (w.visibility='all'
OR EXISTS (SELECT 1 FROM website_users wu WHERE wu.website_id=w.id AND wu.user_id=%s)) OR EXISTS (SELECT 1 FROM website_users wu WHERE wu.website_id=w.id AND wu.user_id=%s))
AND (w.check_type='daily'
OR (w.check_type='weekly'
AND NOT EXISTS (
SELECT 1 FROM shift_checks sc2
WHERE sc2.website_id=w.id AND sc2.user_id=%s
AND YEARWEEK(sc2.checked_at,1)=YEARWEEK(CURDATE(),1)
)))
ORDER BY w.name ORDER BY w.name
""", """,
(user_id, user_id, user_id), (user_id, user_id),
) )
rows = cur.fetchall() rows = cur.fetchall()
cur.close() cur.close()