Allow overriding topic
This commit is contained in:
parent
0b840d227b
commit
4f55ffeaf7
|
@ -88,13 +88,15 @@ class NotificationRuleForm(RestrictedFormMixin, ModelForm):
|
|||
model = NotificationRule
|
||||
fields = (
|
||||
"name",
|
||||
"priority",
|
||||
"enabled",
|
||||
"data",
|
||||
"priority",
|
||||
"topic",
|
||||
"enabled",
|
||||
)
|
||||
help_texts = {
|
||||
"name": "The name of the rule.",
|
||||
"priority": "The priority of the rule.",
|
||||
"topic": "The topic to send notifications to. Leave blank for default.",
|
||||
"enabled": "Whether the rule is enabled.",
|
||||
"data": "The notification rule definition.",
|
||||
}
|
||||
|
|
|
@ -29,10 +29,11 @@ def raw_sendmsg(msg, title=None, priority=None, tags=None, url=None, topic=None)
|
|||
def sendmsg(user, *args, **kwargs):
|
||||
notification_settings = user.get_notification_settings()
|
||||
|
||||
if notification_settings.ntfy_topic is None:
|
||||
# No topic set, so don't send
|
||||
return
|
||||
else:
|
||||
topic = notification_settings.ntfy_topic
|
||||
if "topic" not in kwargs:
|
||||
if notification_settings.ntfy_topic is None:
|
||||
# No topic set, so don't send
|
||||
return
|
||||
else:
|
||||
kwargs["topic"] = notification_settings.ntfy_topic
|
||||
|
||||
raw_sendmsg(*args, **kwargs, url=notification_settings.ntfy_url, topic=topic)
|
||||
raw_sendmsg(*args, **kwargs, url=notification_settings.ntfy_url)
|
||||
|
|
|
@ -26,7 +26,14 @@ def rule_matched(rule, message, matched_fields):
|
|||
|
||||
notify_message = f"{rule.name} matched on {matched_fields}\n{message}"
|
||||
notify_message = notify_message.encode("utf-8", "replace")
|
||||
sendmsg(rule.user, notify_message, title=title, priority=str(rule.priority))
|
||||
|
||||
cast = {
|
||||
"title": title,
|
||||
"priority": str(rule.priority),
|
||||
}
|
||||
if rule.topic is not None:
|
||||
cast["topic"] = rule.topic
|
||||
sendmsg(rule.user, notify_message, **cast)
|
||||
|
||||
|
||||
def process_rules(data):
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 4.1.5 on 2023-01-12 18:14
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0014_notificationrule_priority'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='notificationrule',
|
||||
name='topic',
|
||||
field=models.CharField(blank=True, max_length=255, null=True),
|
||||
),
|
||||
]
|
|
@ -146,6 +146,7 @@ class NotificationRule(models.Model):
|
|||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
name = models.CharField(max_length=255)
|
||||
priority = models.IntegerField(choices=PRIORITY_CHOICES, default=1)
|
||||
topic = models.CharField(max_length=255, null=True, blank=True)
|
||||
enabled = models.BooleanField(default=True)
|
||||
data = models.TextField()
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
<th>id</th>
|
||||
<th>user</th>
|
||||
<th>name</th>
|
||||
<th>priority</th>
|
||||
<th>topic</th>
|
||||
<th>enabled</th>
|
||||
<th>data length</th>
|
||||
<th>actions</th>
|
||||
|
@ -20,6 +22,8 @@
|
|||
<td>{{ item.id }}</td>
|
||||
<td>{{ item.user }}</td>
|
||||
<td>{{ item.name }}</td>
|
||||
<td>{{ item.priority }}</td>
|
||||
<td>{{ item.topic }}</td>
|
||||
<td>
|
||||
{% if item.enabled %}
|
||||
<span class="icon">
|
||||
|
|
Loading…
Reference in New Issue