Jun 26 - Fix weekly websites disappear when checked
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user