mirror of
https://github.com/sassanix/Warracker.git
synced 2026-01-03 03:59:39 -06:00
Fixes & Enhancements * Resolved five critical Apprise notification issues: • Ensured configuration reload during scheduled jobs • Fixed warranty data fetching for Apprise-only users • Refactored notification dispatch logic with dedicated helpers • Corrected handler scoping via Flask app context • Wrapped scheduler jobs with Flask app context to prevent context errors → Verified: Scheduled Apprise notifications now work reliably for "Apprise only" and "Both" channels. * Added support for SMTP\_FROM\_ADDRESS environment variable, allowing sender address customization independent of SMTP username. (PR #115) * Fixed duplicate scheduled notifications in multi-worker environments: • Strengthened should\_run\_scheduler() logic • Now guarantees exactly one scheduler instance across all Gunicorn modes. * Fixed stale database connection handling in scheduled jobs: • Fresh connection acquired each run, properly released via try/finally • Eliminates "server closed the connection" errors. * Definitive scheduler logic fix for all memory modes (ultra-light, optimized, performance): • Single-worker runs scheduler if GUNICORN\_WORKER\_ID is unset • Multi-worker: only worker 0 runs scheduler. Impact * Apprise and Email notifications are now stable, reliable, and production-ready * No more duplicate or missed notifications across all memory modes * Improved system efficiency and robustness
31 lines
1.1 KiB
SQL
31 lines
1.1 KiB
SQL
-- Migration: Add preferred_language column to users table
|
|
-- Date: 2024-01-01
|
|
-- Description: Add language preference support for internationalization
|
|
|
|
-- Add preferred_language column to users table
|
|
ALTER TABLE users
|
|
ADD COLUMN IF NOT EXISTS preferred_language VARCHAR(5) DEFAULT 'en';
|
|
|
|
-- Add index for better query performance
|
|
CREATE INDEX IF NOT EXISTS idx_users_preferred_language ON users(preferred_language);
|
|
|
|
-- Add constraint to ensure only valid language codes (with error handling)
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.table_constraints
|
|
WHERE constraint_name = 'chk_users_preferred_language'
|
|
AND table_name = 'users'
|
|
) THEN
|
|
ALTER TABLE users
|
|
ADD CONSTRAINT chk_users_preferred_language
|
|
CHECK (preferred_language IN ('en', 'fr', 'es', 'de', 'it'));
|
|
END IF;
|
|
END $$;
|
|
|
|
COMMENT ON COLUMN users.preferred_language IS 'User preferred language for UI localization (ISO 639-1 code)';
|
|
|
|
-- Set default language for existing users
|
|
UPDATE users
|
|
SET preferred_language = 'en'
|
|
WHERE preferred_language IS NULL; |