2015-02-05 15:46:06 +01:00
|
|
|
from synapse.push.rulekinds import PRIORITY_CLASS_MAP, PRIORITY_CLASS_INVERSE_MAP
|
|
|
|
|
|
|
|
def list_with_base_rules(rawrules, user_name):
|
|
|
|
ruleslist = []
|
|
|
|
|
|
|
|
# shove the server default rules for each kind onto the end of each
|
2015-02-09 15:17:52 +01:00
|
|
|
current_prio_class = PRIORITY_CLASS_INVERSE_MAP.keys()[-1]
|
2015-02-05 15:46:06 +01:00
|
|
|
for r in rawrules:
|
2015-02-09 15:17:52 +01:00
|
|
|
if r['priority_class'] < current_prio_class:
|
|
|
|
while r['priority_class'] < current_prio_class:
|
2015-02-05 15:46:06 +01:00
|
|
|
ruleslist.extend(make_base_rules(
|
|
|
|
user_name,
|
|
|
|
PRIORITY_CLASS_INVERSE_MAP[current_prio_class])
|
|
|
|
)
|
2015-02-09 15:17:52 +01:00
|
|
|
current_prio_class -= 1
|
2015-02-05 15:46:06 +01:00
|
|
|
|
|
|
|
ruleslist.append(r)
|
|
|
|
|
2015-02-09 15:17:52 +01:00
|
|
|
while current_prio_class > 0:
|
2015-02-05 15:46:06 +01:00
|
|
|
ruleslist.extend(make_base_rules(
|
|
|
|
user_name,
|
|
|
|
PRIORITY_CLASS_INVERSE_MAP[current_prio_class])
|
|
|
|
)
|
2015-02-09 15:17:52 +01:00
|
|
|
current_prio_class -= 1
|
2015-02-05 15:46:06 +01:00
|
|
|
|
|
|
|
return ruleslist
|
|
|
|
|
|
|
|
|
|
|
|
def make_base_rules(user, kind):
|
|
|
|
rules = []
|
|
|
|
|
|
|
|
if kind == 'override':
|
|
|
|
rules = make_base_override_rules()
|
|
|
|
elif kind == 'content':
|
|
|
|
rules = make_base_content_rules(user)
|
|
|
|
|
|
|
|
for r in rules:
|
|
|
|
r['priority_class'] = PRIORITY_CLASS_MAP[kind]
|
2015-02-05 16:11:38 +01:00
|
|
|
r['default'] = True
|
2015-02-05 15:46:06 +01:00
|
|
|
|
|
|
|
return rules
|
|
|
|
|
|
|
|
|
|
|
|
def make_base_content_rules(user):
|
|
|
|
return [
|
2015-01-29 19:38:22 +01:00
|
|
|
{
|
|
|
|
'conditions': [
|
|
|
|
{
|
|
|
|
'kind': 'event_match',
|
|
|
|
'key': 'content.body',
|
2015-02-05 15:46:06 +01:00
|
|
|
'pattern': user.localpart, # Matrix ID match
|
2015-01-29 19:38:22 +01:00
|
|
|
}
|
|
|
|
],
|
|
|
|
'actions': [
|
|
|
|
'notify',
|
|
|
|
{
|
2015-02-05 15:46:06 +01:00
|
|
|
'set_tweak': 'sound',
|
|
|
|
'value': 'default',
|
2015-01-29 19:38:22 +01:00
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
2015-02-05 15:46:06 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
def make_base_override_rules():
|
|
|
|
return [
|
2015-01-29 19:38:22 +01:00
|
|
|
{
|
|
|
|
'conditions': [
|
|
|
|
{
|
|
|
|
'kind': 'contains_display_name'
|
|
|
|
}
|
|
|
|
],
|
|
|
|
'actions': [
|
|
|
|
'notify',
|
|
|
|
{
|
2015-02-05 15:46:06 +01:00
|
|
|
'set_tweak': 'sound',
|
|
|
|
'value': 'default'
|
2015-01-29 19:38:22 +01:00
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
2015-01-30 15:46:03 +01:00
|
|
|
{
|
|
|
|
'conditions': [
|
|
|
|
{
|
|
|
|
'kind': 'room_member_count',
|
|
|
|
'is': '2'
|
|
|
|
}
|
|
|
|
],
|
|
|
|
'actions': [
|
|
|
|
'notify',
|
|
|
|
{
|
2015-02-03 17:06:31 +01:00
|
|
|
'set_tweak': 'sound',
|
|
|
|
'value': 'default'
|
2015-01-30 15:46:03 +01:00
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
2015-01-30 16:54:29 +01:00
|
|
|
]
|