diff --git a/frigate/api/review.py b/frigate/api/review.py index b04c8353a..977a0aa94 100644 --- a/frigate/api/review.py +++ b/frigate/api/review.py @@ -176,7 +176,6 @@ async def review_summary( hour_modifier, minute_modifier, seconds_offset = get_tz_modifiers(params.timezone) day_ago = (datetime.datetime.now() - datetime.timedelta(hours=24)).timestamp() - month_ago = (datetime.datetime.now() - datetime.timedelta(days=30)).timestamp() cameras = params.cameras labels = params.labels @@ -277,7 +276,7 @@ async def review_summary( .get() ) - clauses = [(ReviewSegment.start_time > month_ago)] + clauses = [] if cameras != "all": camera_list = cameras.split(",") @@ -365,7 +364,7 @@ async def review_summary( & (UserReviewStatus.user_id == user_id) ), ) - .where(reduce(operator.and_, clauses)) + .where(reduce(operator.and_, clauses) if clauses else True) .group_by( (ReviewSegment.start_time + seconds_offset).cast("int") / day_in_seconds ) diff --git a/frigate/test/http_api/test_http_review.py b/frigate/test/http_api/test_http_review.py index 19c589a67..9fd0d1ea7 100644 --- a/frigate/test/http_api/test_http_review.py +++ b/frigate/test/http_api/test_http_review.py @@ -280,82 +280,6 @@ class TestHttpReview(BaseTestHttp): } self.assertEqual(response_json, expected_response) - def test_get_review_summary_multiple_days_edge_cases(self): - now = datetime.now() - five_days_ago = datetime.today() - timedelta(days=5) - twenty_days_ago = datetime.today() - timedelta(days=20) - one_month_ago = datetime.today() - timedelta(days=30) - one_month_ago_ts = one_month_ago.timestamp() - - with TestClient(self.app) as client: - super().insert_mock_review_segment("123456.random", now.timestamp()) - super().insert_mock_review_segment( - "123457.random", five_days_ago.timestamp() - ) - super().insert_mock_review_segment( - "123458.random", - twenty_days_ago.timestamp(), - None, - SeverityEnum.detection, - ) - # One month ago plus 5 seconds fits within the condition (review.start_time > month_ago). Assuming that the endpoint does not take more than 5 seconds to be invoked - super().insert_mock_review_segment( - "123459.random", - one_month_ago_ts + 5, - None, - SeverityEnum.detection, - ) - # This won't appear in the output since it's not within last month start_time clause (review.start_time > month_ago) - super().insert_mock_review_segment("123450.random", one_month_ago_ts) - response = client.get("/review/summary") - assert response.status_code == 200 - response_json = response.json() - # e.g. '2024-11-24' - today_formatted = now.strftime("%Y-%m-%d") - # e.g. '2024-11-19' - five_days_ago_formatted = five_days_ago.strftime("%Y-%m-%d") - # e.g. '2024-11-04' - twenty_days_ago_formatted = twenty_days_ago.strftime("%Y-%m-%d") - # e.g. '2024-10-24' - one_month_ago_formatted = one_month_ago.strftime("%Y-%m-%d") - expected_response = { - "last24Hours": { - "reviewed_alert": 0, - "reviewed_detection": 0, - "total_alert": 1, - "total_detection": 0, - }, - today_formatted: { - "day": today_formatted, - "reviewed_alert": 0, - "reviewed_detection": 0, - "total_alert": 1, - "total_detection": 0, - }, - five_days_ago_formatted: { - "day": five_days_ago_formatted, - "reviewed_alert": 0, - "reviewed_detection": 0, - "total_alert": 1, - "total_detection": 0, - }, - twenty_days_ago_formatted: { - "day": twenty_days_ago_formatted, - "reviewed_alert": 0, - "reviewed_detection": 0, - "total_alert": 0, - "total_detection": 1, - }, - one_month_ago_formatted: { - "day": one_month_ago_formatted, - "reviewed_alert": 0, - "reviewed_detection": 0, - "total_alert": 0, - "total_detection": 1, - }, - } - self.assertEqual(response_json, expected_response) - def test_get_review_summary_multiple_in_same_day(self): now = datetime.now() five_days_ago = datetime.today() - timedelta(days=5)