fix: Better proxy for active site and disable on selfhosted
This commit is contained in:
parent
0d85bec58f
commit
6db7cb096d
3 changed files with 25 additions and 29 deletions
|
|
@ -558,7 +558,8 @@
|
|||
"fieldtype": "Datetime",
|
||||
"label": "Last Active",
|
||||
"no_copy": 1,
|
||||
"read_only": 1
|
||||
"read_only": 1,
|
||||
"search_index": 1
|
||||
},
|
||||
{
|
||||
"description": "Stores the JSON of last known versions of various installed apps. It is used to show release notes.",
|
||||
|
|
@ -888,7 +889,7 @@
|
|||
"link_fieldname": "user"
|
||||
}
|
||||
],
|
||||
"modified": "2024-12-31 19:35:17.052698",
|
||||
"modified": "2025-02-21 20:11:36.150167",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "User",
|
||||
|
|
@ -920,6 +921,7 @@
|
|||
],
|
||||
"quick_entry": 1,
|
||||
"route": "user",
|
||||
"row_format": "Dynamic",
|
||||
"search_fields": "full_name",
|
||||
"show_name_in_global_search": 1,
|
||||
"sort_field": "creation",
|
||||
|
|
|
|||
|
|
@ -61,42 +61,34 @@ class TestScheduler(IntegrationTestCase):
|
|||
# 1st job is in the queue (or running), don't enqueue it again
|
||||
self.assertFalse(job.enqueue())
|
||||
|
||||
def test_is_dormant(self):
|
||||
@patch.object(frappe.utils.frappecloud, "on_frappecloud", return_value=True)
|
||||
@patch.dict(frappe.conf, {"developer_mode": 0})
|
||||
def test_is_dormant(self, _mock):
|
||||
last_activity = frappe.db.get_value("User", filters={}, fieldname="max(last_active)")
|
||||
self.assertTrue(is_dormant(check_time=get_datetime("2100-01-01 00:00:00")))
|
||||
self.assertTrue(is_dormant(check_time=add_days(frappe.db.get_last_created("Activity Log"), 5)))
|
||||
self.assertFalse(is_dormant(check_time=frappe.db.get_last_created("Activity Log")))
|
||||
self.assertTrue(is_dormant(check_time=add_days(last_activity, 5)))
|
||||
self.assertFalse(is_dormant(check_time=last_activity))
|
||||
|
||||
def test_once_a_day_for_dormant(self):
|
||||
@patch.object(frappe.utils.frappecloud, "on_frappecloud", return_value=True)
|
||||
@patch.dict(frappe.conf, {"developer_mode": 0})
|
||||
def test_once_a_day_for_dormant(self, _mocks):
|
||||
last_activity = frappe.db.get_value("User", filters={}, fieldname="max(last_active)")
|
||||
frappe.db.truncate("Scheduled Job Log")
|
||||
self.assertTrue(schedule_jobs_based_on_activity(check_time=get_datetime("2100-01-01 00:00:00")))
|
||||
self.assertTrue(
|
||||
schedule_jobs_based_on_activity(
|
||||
check_time=add_days(frappe.db.get_last_created("Activity Log"), 5)
|
||||
)
|
||||
)
|
||||
self.assertTrue(schedule_jobs_based_on_activity(check_time=add_days(last_activity, 5)))
|
||||
|
||||
# create a fake job executed 5 days from now
|
||||
job = get_test_job(method="frappe.tests.test_scheduler.test_method", frequency="Daily")
|
||||
job.execute()
|
||||
job_log = frappe.get_doc("Scheduled Job Log", dict(scheduled_job_type=job.name))
|
||||
job_log.db_set(
|
||||
"creation", add_days(_get_last_creation_timestamp("Activity Log"), 5), update_modified=False
|
||||
)
|
||||
job_log.db_set("creation", add_days(last_activity, 5), update_modified=False)
|
||||
schedule_jobs_based_on_activity.clear_cache()
|
||||
|
||||
# inactive site with recent job, don't run
|
||||
self.assertFalse(
|
||||
schedule_jobs_based_on_activity(
|
||||
check_time=add_days(_get_last_creation_timestamp("Activity Log"), 5)
|
||||
)
|
||||
)
|
||||
self.assertFalse(schedule_jobs_based_on_activity(check_time=add_days(last_activity, 5)))
|
||||
|
||||
# one more day has passed
|
||||
self.assertTrue(
|
||||
schedule_jobs_based_on_activity(
|
||||
check_time=add_days(_get_last_creation_timestamp("Activity Log"), 6)
|
||||
)
|
||||
)
|
||||
self.assertTrue(schedule_jobs_based_on_activity(check_time=add_days(last_activity, 6)))
|
||||
|
||||
def test_real_time_alignment(self):
|
||||
test_cases = {
|
||||
|
|
|
|||
|
|
@ -220,17 +220,19 @@ def schedule_jobs_based_on_activity(check_time=None):
|
|||
|
||||
|
||||
def is_dormant(check_time=None):
|
||||
if frappe.conf.developer_mode:
|
||||
return False # Assume never dormant if developer_mode is enabled
|
||||
from frappe.utils.frappecloud import on_frappecloud
|
||||
|
||||
if frappe.conf.developer_mode or not on_frappecloud():
|
||||
return False
|
||||
threshold = cint(frappe.get_system_settings("dormant_days")) * 86400
|
||||
if not threshold:
|
||||
return False
|
||||
|
||||
last_activity_log_timestamp = _get_last_creation_timestamp("Activity Log")
|
||||
last_activity = frappe.db.get_value("User", filters={}, fieldname="max(last_active)")
|
||||
|
||||
if not last_activity_log_timestamp:
|
||||
if not last_activity:
|
||||
return True
|
||||
if ((check_time or now_datetime()) - last_activity_log_timestamp).total_seconds() >= threshold:
|
||||
if ((check_time or now_datetime()) - last_activity).total_seconds() >= threshold:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue