refac
This commit is contained in:
@@ -273,9 +273,20 @@ class AutomationTable:
|
|||||||
|
|
||||||
from open_webui.utils.automations import next_run_ns
|
from open_webui.utils.automations import next_run_ns
|
||||||
|
|
||||||
|
# Batch-fetch user timezones so rescheduling respects each
|
||||||
|
# user's local timezone instead of falling back to server time.
|
||||||
|
user_ids = list({row.user_id for row in rows})
|
||||||
|
timezone_by_user_id: dict[str, Optional[str]] = {}
|
||||||
|
if user_ids:
|
||||||
|
from open_webui.models.users import User
|
||||||
|
tz_result = await db.execute(
|
||||||
|
select(User.id, User.timezone).where(User.id.in_(user_ids))
|
||||||
|
)
|
||||||
|
timezone_by_user_id = {uid: tz for uid, tz in tz_result.all()}
|
||||||
|
|
||||||
for row in rows:
|
for row in rows:
|
||||||
row.last_run_at = now_ns
|
row.last_run_at = now_ns
|
||||||
row.next_run_at = next_run_ns(row.data.get('rrule', ''))
|
row.next_run_at = next_run_ns(row.data.get('rrule', ''), tz=timezone_by_user_id.get(row.user_id))
|
||||||
|
|
||||||
await db.commit()
|
await db.commit()
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
import 'tippy.js/dist/tippy.css';
|
import 'tippy.js/dist/tippy.css';
|
||||||
|
|
||||||
import { executeToolServer, getBackendConfig, getModels, getVersion } from '$lib/apis';
|
import { executeToolServer, getBackendConfig, getModels, getVersion } from '$lib/apis';
|
||||||
import { getSessionUser, userSignOut } from '$lib/apis/auths';
|
import { getSessionUser, updateUserTimezone, userSignOut } from '$lib/apis/auths';
|
||||||
import { getAllTags, getChatList } from '$lib/apis/chats';
|
import { getAllTags, getChatList } from '$lib/apis/chats';
|
||||||
import { chatCompletion } from '$lib/apis/openai';
|
import { chatCompletion } from '$lib/apis/openai';
|
||||||
import {
|
import {
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
} from '$lib/utils/connections';
|
} from '$lib/utils/connections';
|
||||||
|
|
||||||
import { WEBUI_API_BASE_URL, WEBUI_BASE_URL, WEBUI_HOSTNAME } from '$lib/constants';
|
import { WEBUI_API_BASE_URL, WEBUI_BASE_URL, WEBUI_HOSTNAME } from '$lib/constants';
|
||||||
import { bestMatchingLanguage, displayFileHandler } from '$lib/utils';
|
import { bestMatchingLanguage, displayFileHandler, getUserTimezone } from '$lib/utils';
|
||||||
import { setTextScale } from '$lib/utils/text-scale';
|
import { setTextScale } from '$lib/utils/text-scale';
|
||||||
|
|
||||||
import NotificationToast from '$lib/components/NotificationToast.svelte';
|
import NotificationToast from '$lib/components/NotificationToast.svelte';
|
||||||
@@ -989,6 +989,12 @@
|
|||||||
console.error('Error refreshing backend config:', error);
|
console.error('Error refreshing backend config:', error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Keep user timezone in sync on every app load/refresh
|
||||||
|
const timezone = getUserTimezone();
|
||||||
|
if (timezone) {
|
||||||
|
updateUserTimezone(localStorage.token, timezone);
|
||||||
|
}
|
||||||
|
|
||||||
// Relay auth token to desktop app for API access
|
// Relay auth token to desktop app for API access
|
||||||
if (window.electronAPI?.send) {
|
if (window.electronAPI?.send) {
|
||||||
window.electronAPI
|
window.electronAPI
|
||||||
|
|||||||
Reference in New Issue
Block a user