From e7d7152c3c88467e045f7c39e60e3ffeab40139b Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 6 Mar 2015 15:03:34 +0000 Subject: Remove the fallback rule - we probably don't want to be notifying for everything even if we don't know what it is. --- synapse/push/baserules.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) (limited to 'synapse/push') diff --git a/synapse/push/baserules.py b/synapse/push/baserules.py index eddc7fcbe2..0c91e77c62 100644 --- a/synapse/push/baserules.py +++ b/synapse/push/baserules.py @@ -190,13 +190,5 @@ def make_base_underride_rules(user): 'value': 'ring' } ] - }, - { - 'rule_id': 'global/underride/.m.rule.fallback', - 'conditions': [ - ], - 'actions': [ - 'notify', - ] - }, + } ] -- cgit 1.5.1 From 96eda876a4e52269b7eec62ccdd4698aa1721b8e Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 6 Mar 2015 15:12:37 +0000 Subject: Specify when we don't want to highlight --- synapse/push/baserules.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'synapse/push') diff --git a/synapse/push/baserules.py b/synapse/push/baserules.py index 0c91e77c62..6d00ebd36d 100644 --- a/synapse/push/baserules.py +++ b/synapse/push/baserules.py @@ -113,6 +113,9 @@ def make_base_override_rules(): { 'set_tweak': 'sound', 'value': 'default' + }, { + 'set_tweak': 'highlight', + 'value': 'false' } ] } @@ -145,6 +148,9 @@ def make_base_underride_rules(user): { 'set_tweak': 'sound', 'value': 'default' + }, { + 'set_tweak': 'highlight', + 'value': 'false' } ] }, @@ -158,7 +164,10 @@ def make_base_underride_rules(user): } ], 'actions': [ - 'notify', + 'notify', { + 'set_tweak': 'highlight', + 'value': 'false' + } ] }, { @@ -171,7 +180,10 @@ def make_base_underride_rules(user): } ], 'actions': [ - 'notify', + 'notify', { + 'set_tweak': 'highlight', + 'value': 'false' + } ] }, { @@ -188,6 +200,9 @@ def make_base_underride_rules(user): { 'set_tweak': 'sound', 'value': 'ring' + }, { + 'set_tweak': 'highlight', + 'value': 'false' } ] } -- cgit 1.5.1 From be9dafcd37fd3db1b4e0bccf9417d9ddfe344958 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 6 Mar 2015 15:32:38 +0000 Subject: Dial down logging for failed pushers --- synapse/push/httppusher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'synapse/push') diff --git a/synapse/push/httppusher.py b/synapse/push/httppusher.py index caca709f10..a02fed57b4 100644 --- a/synapse/push/httppusher.py +++ b/synapse/push/httppusher.py @@ -109,7 +109,7 @@ class HttpPusher(Pusher): try: resp = yield self.httpCli.post_json_get_json(self.url, notification_dict) except: - logger.exception("Failed to push %s ", self.url) + logger.warn("Failed to push %s ", self.url) defer.returnValue(False) rejected = [] if 'rejected' in resp: -- cgit 1.5.1 From 118c883429d1564f63ab37424a8e0bc602c10709 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 6 Mar 2015 19:36:12 +0000 Subject: Call notifications should be override else they'll get clobbered by sender/room rules. --- synapse/push/baserules.py | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) (limited to 'synapse/push') diff --git a/synapse/push/baserules.py b/synapse/push/baserules.py index 6d00ebd36d..b33714f1f6 100644 --- a/synapse/push/baserules.py +++ b/synapse/push/baserules.py @@ -71,7 +71,27 @@ def make_base_content_rules(user): def make_base_override_rules(): return [ { - 'rule_id': 'global/underride/.m.rule.suppress_notices', + 'rule_id': 'global/override/.m.rule.call', + 'conditions': [ + { + 'kind': 'event_match', + 'key': 'type', + 'pattern': 'm.call.invite', + } + ], + 'actions': [ + 'notify', + { + 'set_tweak': 'sound', + 'value': 'ring' + }, { + 'set_tweak': 'highlight', + 'value': 'false' + } + ] + }, + { + 'rule_id': 'global/override/.m.rule.suppress_notices', 'conditions': [ { 'kind': 'event_match', @@ -185,25 +205,5 @@ def make_base_underride_rules(user): 'value': 'false' } ] - }, - { - 'rule_id': 'global/underride/.m.rule.call', - 'conditions': [ - { - 'kind': 'event_match', - 'key': 'type', - 'pattern': 'm.call.invite', - } - ], - 'actions': [ - 'notify', - { - 'set_tweak': 'sound', - 'value': 'ring' - }, { - 'set_tweak': 'highlight', - 'value': 'false' - } - ] } ] -- cgit 1.5.1 From 1df3ccf7ee646690570ce1d799b3c6c226179e3d Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 9 Mar 2015 12:39:56 +0000 Subject: D'oh: underscore, not hyphen --- synapse/push/baserules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'synapse/push') diff --git a/synapse/push/baserules.py b/synapse/push/baserules.py index b33714f1f6..6e333a3d21 100644 --- a/synapse/push/baserules.py +++ b/synapse/push/baserules.py @@ -100,7 +100,7 @@ def make_base_override_rules(): } ], 'actions': [ - 'dont-notify', + 'dont_notify', ] }, { -- cgit 1.5.1 From 04f8478aaa02d11ce079d1eaeabcfba88b1fcee7 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 10 Mar 2015 17:26:25 +0000 Subject: Add the master push rule for the break-my-push button. Allow server default rules to be disabled by default. --- synapse/push/__init__.py | 6 +++- synapse/push/baserules.py | 58 +++++++++++++++++++++++++++++++------ synapse/rest/client/v1/push_rule.py | 5 +++- synapse/storage/push_rule.py | 27 ++++------------- 4 files changed, 63 insertions(+), 33 deletions(-) (limited to 'synapse/push') diff --git a/synapse/push/__init__.py b/synapse/push/__init__.py index 3da0ce8703..c98aca60b9 100644 --- a/synapse/push/__init__.py +++ b/synapse/push/__init__.py @@ -105,7 +105,11 @@ 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']]: + if r['rule_id'] in enabled_map: + r['enabled'] = enabled_map[r['rule_id']] + elif 'enabled' not in r: + r['enabled'] = True + if not r['enabled']: continue matches = True diff --git a/synapse/push/baserules.py b/synapse/push/baserules.py index 6e333a3d21..bf6ee67100 100644 --- a/synapse/push/baserules.py +++ b/synapse/push/baserules.py @@ -6,36 +6,63 @@ def list_with_base_rules(rawrules, user_name): # shove the server default rules for each kind onto the end of each current_prio_class = PRIORITY_CLASS_INVERSE_MAP.keys()[-1] + + ruleslist.extend(make_base_prepend_rules( + user_name, PRIORITY_CLASS_INVERSE_MAP[current_prio_class] + )) + for r in rawrules: if r['priority_class'] < current_prio_class: while r['priority_class'] < current_prio_class: - ruleslist.extend(make_base_rules( + ruleslist.extend(make_base_append_rules( user_name, PRIORITY_CLASS_INVERSE_MAP[current_prio_class] )) current_prio_class -= 1 + if current_prio_class > 0: + ruleslist.extend(make_base_prepend_rules( + user_name, + PRIORITY_CLASS_INVERSE_MAP[current_prio_class] + )) ruleslist.append(r) while current_prio_class > 0: - ruleslist.extend(make_base_rules( + ruleslist.extend(make_base_append_rules( user_name, PRIORITY_CLASS_INVERSE_MAP[current_prio_class] )) current_prio_class -= 1 + if current_prio_class > 0: + ruleslist.extend(make_base_prepend_rules( + user_name, + PRIORITY_CLASS_INVERSE_MAP[current_prio_class] + )) return ruleslist -def make_base_rules(user, kind): +def make_base_append_rules(user, kind): rules = [] if kind == 'override': - rules = make_base_override_rules() + rules = make_base_append_override_rules() elif kind == 'underride': - rules = make_base_underride_rules(user) + rules = make_base_append_underride_rules(user) elif kind == 'content': - rules = make_base_content_rules(user) + rules = make_base_append_content_rules(user) + + for r in rules: + r['priority_class'] = PRIORITY_CLASS_MAP[kind] + r['default'] = True # Deprecated, left for backwards compat + + return rules + +def make_base_prepend_rules(user, kind): + rules = [] + + if kind == 'override': + rules = make_base_prepend_override_rules() for r in rules: r['priority_class'] = PRIORITY_CLASS_MAP[kind] @@ -44,7 +71,7 @@ def make_base_rules(user, kind): return rules -def make_base_content_rules(user): +def make_base_append_content_rules(user): return [ { 'rule_id': 'global/content/.m.rule.contains_user_name', @@ -68,7 +95,20 @@ def make_base_content_rules(user): ] -def make_base_override_rules(): +def make_base_prepend_override_rules(): + return [ + { + 'rule_id': 'global/override/.m.rule.master', + 'enabled': False, + 'conditions': [], + 'actions': [ + "dont_notify" + ] + } + ] + + +def make_base_append_override_rules(): return [ { 'rule_id': 'global/override/.m.rule.call', @@ -142,7 +182,7 @@ def make_base_override_rules(): ] -def make_base_underride_rules(user): +def make_base_append_underride_rules(user): return [ { 'rule_id': 'global/underride/.m.rule.invite_for_me', diff --git a/synapse/rest/client/v1/push_rule.py b/synapse/rest/client/v1/push_rule.py index fef0eb6572..d4e7ab2202 100644 --- a/synapse/rest/client/v1/push_rule.py +++ b/synapse/rest/client/v1/push_rule.py @@ -156,9 +156,12 @@ class PushRuleRestServlet(ClientV1RestServlet): template_rule = _rule_to_template(r) if template_rule: - template_rule['enabled'] = True if r['rule_id'] in enabled_map: template_rule['enabled'] = enabled_map[r['rule_id']] + elif 'enabled' in r: + template_rule['enabled'] = r['enabled'] + else: + template_rule['enabled'] = True rulearray.append(template_rule) path = request.postpath[1:] diff --git a/synapse/storage/push_rule.py b/synapse/storage/push_rule.py index bbf322cc84..1628489fa7 100644 --- a/synapse/storage/push_rule.py +++ b/synapse/storage/push_rule.py @@ -56,17 +56,6 @@ class PushRuleStore(SQLBaseStore): {r['rule_id']: False if r['enabled'] == 0 else True for r in results} ) - @defer.inlineCallbacks - def get_push_rule_enabled_by_user_rule_id(self, user_name, rule_id): - results = yield self._simple_select_list( - PushRuleEnableTable.table_name, - {'user_name': user_name, 'rule_id': rule_id}, - ['enabled'] - ) - if not results: - defer.returnValue(True) - defer.returnValue(results[0]) - @defer.inlineCallbacks def add_push_rule(self, before, after, **kwargs): vals = copy.copy(kwargs) @@ -217,17 +206,11 @@ class PushRuleStore(SQLBaseStore): @defer.inlineCallbacks def set_push_rule_enabled(self, user_name, rule_id, enabled): - if enabled: - yield self._simple_delete_one( - PushRuleEnableTable.table_name, - {'user_name': user_name, 'rule_id': rule_id} - ) - else: - yield self._simple_upsert( - PushRuleEnableTable.table_name, - {'user_name': user_name, 'rule_id': rule_id}, - {'enabled': False} - ) + yield self._simple_upsert( + PushRuleEnableTable.table_name, + {'user_name': user_name, 'rule_id': rule_id}, + {'enabled': enabled} + ) class RuleNotFoundException(Exception): -- cgit 1.5.1 From 83b1e7fb3cd411a4e86fe8926e71c28495c7fa60 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 11 Mar 2015 10:01:17 +0000 Subject: PEP8 blank lines --- synapse/push/baserules.py | 1 + 1 file changed, 1 insertion(+) (limited to 'synapse/push') diff --git a/synapse/push/baserules.py b/synapse/push/baserules.py index bf6ee67100..0443ee3779 100644 --- a/synapse/push/baserules.py +++ b/synapse/push/baserules.py @@ -58,6 +58,7 @@ def make_base_append_rules(user, kind): return rules + def make_base_prepend_rules(user, kind): rules = [] -- cgit 1.5.1 From 465354ffdea1585bcab32eae819a7d9683746d8e Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 11 Mar 2015 11:24:50 +0000 Subject: 'false' is not False --- synapse/push/baserules.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'synapse/push') diff --git a/synapse/push/baserules.py b/synapse/push/baserules.py index 0443ee3779..60fd35fbfb 100644 --- a/synapse/push/baserules.py +++ b/synapse/push/baserules.py @@ -127,7 +127,7 @@ def make_base_append_override_rules(): 'value': 'ring' }, { 'set_tweak': 'highlight', - 'value': 'false' + 'value': False } ] }, @@ -176,7 +176,7 @@ def make_base_append_override_rules(): 'value': 'default' }, { 'set_tweak': 'highlight', - 'value': 'false' + 'value': False } ] } @@ -211,7 +211,7 @@ def make_base_append_underride_rules(user): 'value': 'default' }, { 'set_tweak': 'highlight', - 'value': 'false' + 'value': False } ] }, @@ -227,7 +227,7 @@ def make_base_append_underride_rules(user): 'actions': [ 'notify', { 'set_tweak': 'highlight', - 'value': 'false' + 'value': False } ] }, @@ -243,7 +243,7 @@ def make_base_append_underride_rules(user): 'actions': [ 'notify', { 'set_tweak': 'highlight', - 'value': 'false' + 'value': False } ] } -- cgit 1.5.1 From cdb2e045eed71b58c3e14471d9fb8c6ff1cf490d Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 11 Mar 2015 14:22:35 +0000 Subject: Again, underscore, not hyphen --- synapse/push/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'synapse/push') diff --git a/synapse/push/__init__.py b/synapse/push/__init__.py index c98aca60b9..d69c92911f 100644 --- a/synapse/push/__init__.py +++ b/synapse/push/__init__.py @@ -32,7 +32,7 @@ class Pusher(object): INITIAL_BACKOFF = 1000 MAX_BACKOFF = 60 * 60 * 1000 GIVE_UP_AFTER = 24 * 60 * 60 * 1000 - DEFAULT_ACTIONS = ['dont-notify'] + DEFAULT_ACTIONS = ['dont_notify'] INEQUALITY_EXPR = re.compile("^([=<>]*)([0-9]*)$") -- cgit 1.5.1 From c92fdf88a34c22b3147f0a674633cea33ada4b99 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 11 Mar 2015 22:17:31 +0000 Subject: Log the matching push rule. --- synapse/push/__init__.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'synapse/push') diff --git a/synapse/push/__init__.py b/synapse/push/__init__.py index d69c92911f..5056374eb9 100644 --- a/synapse/push/__init__.py +++ b/synapse/push/__init__.py @@ -128,13 +128,15 @@ class Pusher(object): # ignore rules with no actions (we have an explict 'dont_notify') if len(actions) == 0: logger.warn( - "Ignoring rule id %s with no actions for user %s" % - (r['rule_id'], r['user_name']) + "Ignoring rule id %s with no actions for user %s", + r['rule_id'], self.user_name ) continue if matches: + logger.info("%s matches for user %s, event %s", r['rule_id'], self.user_name, ev['event_id']) defer.returnValue(actions) + logger.info("No rules match for user %s, event %s", self.user_name, ev['event_id']) defer.returnValue(Pusher.DEFAULT_ACTIONS) @staticmethod -- cgit 1.5.1 From bbb010a30fe4beb6104e7d185e722a76c88825ff Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 12 Mar 2015 16:53:12 +0000 Subject: More sacrifices to the pep8 gods. --- synapse/push/__init__.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'synapse/push') diff --git a/synapse/push/__init__.py b/synapse/push/__init__.py index 5056374eb9..0727f772a5 100644 --- a/synapse/push/__init__.py +++ b/synapse/push/__init__.py @@ -133,10 +133,16 @@ class Pusher(object): ) continue if matches: - logger.info("%s matches for user %s, event %s", r['rule_id'], self.user_name, ev['event_id']) + logger.info( + "%s matches for user %s, event %s", + r['rule_id'], self.user_name, ev['event_id'] + ) defer.returnValue(actions) - logger.info("No rules match for user %s, event %s", self.user_name, ev['event_id']) + logger.info( + "No rules match for user %s, event %s", + self.user_name, ev['event_id'] + ) defer.returnValue(Pusher.DEFAULT_ACTIONS) @staticmethod -- cgit 1.5.1