Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
synapse
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Monitor
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Maunium
synapse
Commits
74f49f99
Commit
74f49f99
authored
9 years ago
by
David Baker
Browse files
Options
Downloads
Plain Diff
Merge pull request #520 from matrix-org/dbkr/bulk_push_overlay_enabled
Overlay the push_rules_enabled map for users
parents
7a3fe48b
7065b75b
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
synapse/push/bulk_push_rule_evaluator.py
+17
-0
17 additions, 0 deletions
synapse/push/bulk_push_rule_evaluator.py
synapse/storage/push_rule.py
+29
-0
29 additions, 0 deletions
synapse/storage/push_rule.py
with
46 additions
and
0 deletions
synapse/push/bulk_push_rule_evaluator.py
+
17
−
0
View file @
74f49f99
...
@@ -36,6 +36,7 @@ def decode_rule_json(rule):
...
@@ -36,6 +36,7 @@ def decode_rule_json(rule):
@defer.inlineCallbacks
@defer.inlineCallbacks
def
_get_rules
(
room_id
,
user_ids
,
store
):
def
_get_rules
(
room_id
,
user_ids
,
store
):
rules_by_user
=
yield
store
.
bulk_get_push_rules
(
user_ids
)
rules_by_user
=
yield
store
.
bulk_get_push_rules
(
user_ids
)
rules_enabled_by_user
=
yield
store
.
bulk_get_push_rules_enabled
(
user_ids
)
rules_by_user
=
{
rules_by_user
=
{
uid
:
baserules
.
list_with_base_rules
([
uid
:
baserules
.
list_with_base_rules
([
...
@@ -44,6 +45,22 @@ def _get_rules(room_id, user_ids, store):
...
@@ -44,6 +45,22 @@ def _get_rules(room_id, user_ids, store):
])
])
for
uid
in
user_ids
for
uid
in
user_ids
}
}
# We apply the rules-enabled map here: bulk_get_push_rules doesn't
# fetch disabled rules, but this won't account for any server default
# rules the user has disabled, so we need to do this too.
for
uid
in
user_ids
:
if
uid
not
in
rules_enabled_by_user
:
continue
user_enabled_map
=
rules_enabled_by_user
[
uid
]
for
rule
in
rules_by_user
[
uid
]:
rule_id
=
rule
[
'
rule_id
'
]
if
rule_id
in
user_enabled_map
:
rule
[
'
enabled
'
]
=
user_enabled_map
[
rule_id
]
defer
.
returnValue
(
rules_by_user
)
defer
.
returnValue
(
rules_by_user
)
...
...
This diff is collapsed.
Click to expand it.
synapse/storage/push_rule.py
+
29
−
0
View file @
74f49f99
...
@@ -93,6 +93,35 @@ class PushRuleStore(SQLBaseStore):
...
@@ -93,6 +93,35 @@ class PushRuleStore(SQLBaseStore):
results
.
setdefault
(
row
[
'
user_name
'
],
[]).
append
(
row
)
results
.
setdefault
(
row
[
'
user_name
'
],
[]).
append
(
row
)
defer
.
returnValue
(
results
)
defer
.
returnValue
(
results
)
@defer.inlineCallbacks
def
bulk_get_push_rules_enabled
(
self
,
user_ids
):
if
not
user_ids
:
defer
.
returnValue
({})
batch_size
=
100
def
f
(
txn
,
user_ids_to_fetch
):
sql
=
(
"
SELECT user_name, rule_id, enabled
"
"
FROM push_rules_enable
"
"
WHERE user_name
"
"
IN (
"
+
"
,
"
.
join
(
"
?
"
for
_
in
user_ids_to_fetch
)
+
"
)
"
)
txn
.
execute
(
sql
,
user_ids_to_fetch
)
return
self
.
cursor_to_dict
(
txn
)
results
=
{}
chunks
=
[
user_ids
[
i
:
i
+
batch_size
]
for
i
in
xrange
(
0
,
len
(
user_ids
),
batch_size
)]
for
batch_user_ids
in
chunks
:
rows
=
yield
self
.
runInteraction
(
"
bulk_get_push_rules_enabled
"
,
f
,
batch_user_ids
)
for
row
in
rows
:
results
.
setdefault
(
row
[
'
user_name
'
],
{})[
row
[
'
rule_id
'
]]
=
row
[
'
enabled
'
]
defer
.
returnValue
(
results
)
@defer.inlineCallbacks
@defer.inlineCallbacks
def
add_push_rule
(
self
,
before
,
after
,
**
kwargs
):
def
add_push_rule
(
self
,
before
,
after
,
**
kwargs
):
vals
=
kwargs
vals
=
kwargs
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment