From 46ceae0c9ac91f7532fa9874c645897015a3a259 Mon Sep 17 00:00:00 2001
From: aaron <>
Date: Tue, 19 May 2026 09:57:46 +0800
Subject: [PATCH] 1
---
app/server.py | 21 ++++++++++++++++++++-
app/static/styles.css | 25 +++++++++++++++++++++++++
2 files changed, 45 insertions(+), 1 deletion(-)
diff --git a/app/server.py b/app/server.py
index b3aa452..30354eb 100644
--- a/app/server.py
+++ b/app/server.py
@@ -346,6 +346,7 @@ class Handler(BaseHTTPRequestHandler):
"/templates/delete": self.delete_template,
"/rules/create": self.create_rule,
"/rules/update": self.update_rule,
+ "/rules/toggle": self.toggle_rule,
"/rules/delete": self.delete_rule,
"/test/send": self.send_test,
"/account/password": self.change_password,
@@ -799,7 +800,15 @@ class Handler(BaseHTTPRequestHandler):
{' '.join(item for item in conditions if item) or '-'} |
{rule['priority']} |
{target_badges} |
-{'启用' if rule['enabled'] else '停用'} |
+
+
+ |
编辑删除 |
"""
header = """"""
@@ -1121,6 +1130,16 @@ class Handler(BaseHTTPRequestHandler):
conn.execute("DELETE FROM routing_rules WHERE id = ?", (form["id"],))
redirect(self, "/rules")
+ def toggle_rule(self) -> None:
+ form = parse_form(self)
+ enabled = 1 if form.get("enabled") == "on" else 0
+ with self.context.db.connect() as conn:
+ conn.execute(
+ "UPDATE routing_rules SET enabled = ?, updated_at = ? WHERE id = ?",
+ (enabled, now_iso(), form.get("id", "")),
+ )
+ redirect(self, "/rules")
+
def update_rule(self) -> None:
form = parse_form_multi(self)
target_ids = [int(value) for value in form.get("target_ids", [])]
diff --git a/app/static/styles.css b/app/static/styles.css
index c85d3bc..384fa76 100644
--- a/app/static/styles.css
+++ b/app/static/styles.css
@@ -386,6 +386,31 @@ td textarea {
font: 800 14px ui-sans-serif, system-ui, sans-serif;
}
+.switch-compact {
+ margin: 0;
+}
+
+.switch-compact span {
+ width: 44px;
+ height: 26px;
+}
+
+.switch-compact span::after {
+ top: 4px;
+ left: 4px;
+ width: 18px;
+ height: 18px;
+}
+
+.switch-compact input:checked + span::after {
+ transform: translateX(18px);
+}
+
+.switch-compact strong {
+ min-width: 28px;
+ font-size: 13px;
+}
+
.checks {
margin: 8px 0 12px;
}