mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-07-26 13:45:18 -04:00
Add a module API to allow modules to edit push rule actions (#12406)
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
This commit is contained in:
parent
d743b25c8f
commit
5ef673de4f
8 changed files with 319 additions and 104 deletions
|
@ -16,7 +16,7 @@ import abc
|
|||
import logging
|
||||
from typing import TYPE_CHECKING, Dict, List, Tuple, Union
|
||||
|
||||
from synapse.api.errors import NotFoundError, StoreError
|
||||
from synapse.api.errors import StoreError
|
||||
from synapse.push.baserules import list_with_base_rules
|
||||
from synapse.replication.slave.storage._slaved_id_tracker import SlavedIdTracker
|
||||
from synapse.storage._base import SQLBaseStore, db_to_json
|
||||
|
@ -618,7 +618,7 @@ class PushRuleStore(PushRulesWorkerStore):
|
|||
are always stored in the database `push_rules` table).
|
||||
|
||||
Raises:
|
||||
NotFoundError if the rule does not exist.
|
||||
RuleNotFoundException if the rule does not exist.
|
||||
"""
|
||||
async with self._push_rules_stream_id_gen.get_next() as stream_id:
|
||||
event_stream_ordering = self._stream_id_gen.get_current_token()
|
||||
|
@ -668,8 +668,7 @@ class PushRuleStore(PushRulesWorkerStore):
|
|||
)
|
||||
txn.execute(sql, (user_id, rule_id))
|
||||
if txn.fetchone() is None:
|
||||
# needed to set NOT_FOUND code.
|
||||
raise NotFoundError("Push rule does not exist.")
|
||||
raise RuleNotFoundException("Push rule does not exist.")
|
||||
|
||||
self.db_pool.simple_upsert_txn(
|
||||
txn,
|
||||
|
@ -698,9 +697,6 @@ class PushRuleStore(PushRulesWorkerStore):
|
|||
"""
|
||||
Sets the `actions` state of a push rule.
|
||||
|
||||
Will throw NotFoundError if the rule does not exist; the Code for this
|
||||
is NOT_FOUND.
|
||||
|
||||
Args:
|
||||
user_id: the user ID of the user who wishes to enable/disable the rule
|
||||
e.g. '@tina:example.org'
|
||||
|
@ -712,6 +708,9 @@ class PushRuleStore(PushRulesWorkerStore):
|
|||
is_default_rule: True if and only if this is a server-default rule.
|
||||
This skips the check for existence (as only user-created rules
|
||||
are always stored in the database `push_rules` table).
|
||||
|
||||
Raises:
|
||||
RuleNotFoundException if the rule does not exist.
|
||||
"""
|
||||
actions_json = json_encoder.encode(actions)
|
||||
|
||||
|
@ -744,7 +743,7 @@ class PushRuleStore(PushRulesWorkerStore):
|
|||
except StoreError as serr:
|
||||
if serr.code == 404:
|
||||
# this sets the NOT_FOUND error Code
|
||||
raise NotFoundError("Push rule does not exist")
|
||||
raise RuleNotFoundException("Push rule does not exist")
|
||||
else:
|
||||
raise
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue