forked from MirrorHub/synapse
Add enable/disable overlay for push rules (REST API not yet hooked up)
This commit is contained in:
parent
a025055643
commit
94fa334b01
5 changed files with 46 additions and 0 deletions
|
@ -82,6 +82,8 @@ class Pusher(object):
|
|||
r['conditions'] = json.loads(r['conditions'])
|
||||
r['actions'] = json.loads(r['actions'])
|
||||
|
||||
enabled_map = yield self.store.get_push_rules_enabled_for_user_name(self.user_name)
|
||||
|
||||
user = UserID.from_string(self.user_name)
|
||||
|
||||
rules = baserules.list_with_base_rules(rawrules, user)
|
||||
|
@ -107,6 +109,8 @@ class Pusher(object):
|
|||
room_member_count += 1
|
||||
|
||||
for r in rules:
|
||||
if r['rule_id'] in enabled_map and not enabled_map[r['rule_id']]:
|
||||
continue
|
||||
matches = True
|
||||
|
||||
conditions = r['conditions']
|
||||
|
|
|
@ -45,6 +45,7 @@ def make_base_rules(user, kind):
|
|||
def make_base_content_rules(user):
|
||||
return [
|
||||
{
|
||||
'rule_id': '.m.rule.contains_user_name',
|
||||
'conditions': [
|
||||
{
|
||||
'kind': 'event_match',
|
||||
|
@ -66,6 +67,7 @@ def make_base_content_rules(user):
|
|||
def make_base_override_rules():
|
||||
return [
|
||||
{
|
||||
'rule_id': '.m.rule.contains_display_name',
|
||||
'conditions': [
|
||||
{
|
||||
'kind': 'contains_display_name'
|
||||
|
@ -80,6 +82,7 @@ def make_base_override_rules():
|
|||
]
|
||||
},
|
||||
{
|
||||
'rule_id': '.m.rule.room_two_members',
|
||||
'conditions': [
|
||||
{
|
||||
'kind': 'room_member_count',
|
||||
|
|
|
@ -45,6 +45,17 @@ class PushRuleStore(SQLBaseStore):
|
|||
|
||||
defer.returnValue(dicts)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def get_push_rules_enabled_for_user_name(self, user_name):
|
||||
results = yield self._simple_select_list(
|
||||
PushRuleEnableTable.table_name,
|
||||
{'user_name': user_name},
|
||||
PushRuleEnableTable.fields
|
||||
)
|
||||
defer.returnValue(
|
||||
{r['rule_id']: False if r['enabled'] == 0 else True for r in results}
|
||||
)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def add_push_rule(self, before, after, **kwargs):
|
||||
vals = copy.copy(kwargs)
|
||||
|
@ -216,3 +227,12 @@ class PushRuleTable(Table):
|
|||
]
|
||||
|
||||
EntryType = collections.namedtuple("PushRuleEntry", fields)
|
||||
|
||||
class PushRuleEnableTable(Table):
|
||||
table_name = "push_rules_enable"
|
||||
|
||||
fields = [
|
||||
"user_name",
|
||||
"rule_id",
|
||||
"enabled"
|
||||
]
|
9
synapse/storage/schema/delta/next_pushrules2.sql
Normal file
9
synapse/storage/schema/delta/next_pushrules2.sql
Normal file
|
@ -0,0 +1,9 @@
|
|||
CREATE TABLE IF NOT EXISTS push_rules_enable (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_name TEXT NOT NULL,
|
||||
rule_id TEXT NOT NULL,
|
||||
enabled TINYINT,
|
||||
UNIQUE(user_name, rule_id)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS push_rules_enable_user_name on push_rules_enable (user_name);
|
|
@ -44,3 +44,13 @@ CREATE TABLE IF NOT EXISTS push_rules (
|
|||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS push_rules_user_name on push_rules (user_name);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS push_rules_enable (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_name TEXT NOT NULL,
|
||||
rule_id TEXT NOT NULL,
|
||||
enabled TINYINT,
|
||||
UNIQUE(user_name, rule_id)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS push_rules_enable_user_name on push_rules_enable (user_name);
|
||||
|
|
Loading…
Reference in a new issue