mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-09-26 13:58:58 +03:00
* Notice and status bar improvements Status bar problems added in the same pass got the same `Date.now()` id and overwrote each other, so usually only one showed. Messages now fall back to their text as the id. The desktop status bar shows the most severe message with a count of the rest that opens a popover listing all of them, and the mobile drawer stacks them vertically instead of placing them side by side. Dismissing a notice hid it for good, so a detector that restarted again after a dismissal was never shown. Dismiss is replaced by acknowledge, which hides a notice until it happens again, and mute, which hides it permanently. Kinds that never repeat (config and stream checks, the update notice) can only be muted. `reopen_at_count` is removed since acknowledge covers the failed login case. * move camera CPU warnings to notices High ffmpeg and detect CPU warnings sat in the status bar with no way to dismiss them. They're now `ffmpeg_high_cpu` and `detect_high_cpu` notices, raised per episode by the same tracker as skipped detections. Also stop failed login attempts held from before an acknowledgement from reopening the notice. * fix mypy and handle missing cpu stats in notices
42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
"""Peewee migrations -- 038_create_notices.py.
|
|
|
|
Creates the two notice tables: active notices, and per-kind lifetime counts.
|
|
"""
|
|
|
|
import peewee as pw
|
|
|
|
SQL = pw.SQL
|
|
|
|
|
|
def migrate(migrator, database, fake=False, **kwargs):
|
|
migrator.sql(
|
|
'CREATE TABLE IF NOT EXISTS "notice" ('
|
|
'"id" VARCHAR(150) NOT NULL PRIMARY KEY, '
|
|
'"kind" VARCHAR(50) NOT NULL, '
|
|
'"scope" VARCHAR(100), '
|
|
'"params" TEXT NOT NULL, '
|
|
'"first_seen" DATETIME NOT NULL, '
|
|
'"last_seen" DATETIME NOT NULL, '
|
|
'"count" INTEGER NOT NULL, '
|
|
'"acknowledged_at" DATETIME, '
|
|
'"muted_at" DATETIME)'
|
|
)
|
|
migrator.sql('CREATE INDEX IF NOT EXISTS "notice_kind" ON "notice" ("kind")')
|
|
migrator.sql(
|
|
'CREATE TABLE IF NOT EXISTS "noticestats" ('
|
|
'"kind" VARCHAR(50) NOT NULL PRIMARY KEY, '
|
|
'"occurrences" INTEGER NOT NULL, '
|
|
'"acknowledgements" INTEGER NOT NULL, '
|
|
'"mutes" INTEGER NOT NULL, '
|
|
'"first_seen" DATETIME NOT NULL, '
|
|
'"last_seen" DATETIME NOT NULL, '
|
|
'"reported_occurrences" INTEGER NOT NULL DEFAULT 0, '
|
|
'"reported_acknowledgements" INTEGER NOT NULL DEFAULT 0, '
|
|
'"reported_mutes" INTEGER NOT NULL DEFAULT 0)'
|
|
)
|
|
|
|
|
|
def rollback(migrator, database, fake=False, **kwargs):
|
|
migrator.sql('DROP TABLE IF EXISTS "notice"')
|
|
migrator.sql('DROP TABLE IF EXISTS "noticestats"')
|