diff --git a/README.rst b/README.rst
index 5a6e105630..259fbaf459 100644
--- a/README.rst
+++ b/README.rst
@@ -117,7 +117,7 @@ Installing prerequisites on Mac OS X::
To install the synapse homeserver run::
- $ virtualenv ~/.synapse
+ $ virtualenv -p python2.7 ~/.synapse
$ source ~/.synapse/bin/activate
$ pip install --process-dependency-links https://github.com/matrix-org/synapse/tarball/master
diff --git a/synapse/storage/_base.py b/synapse/storage/_base.py
index 0ba12d48a5..46a1c07460 100644
--- a/synapse/storage/_base.py
+++ b/synapse/storage/_base.py
@@ -310,6 +310,7 @@ class SQLBaseStore(object):
self._access_tokens_id_gen = IdGenerator("access_tokens", "id", self)
self._pushers_id_gen = IdGenerator("pushers", "id", self)
self._push_rule_id_gen = IdGenerator("push_rules", "id", self)
+ self._push_rules_enable_id_gen = IdGenerator("push_rules_enable", "id", self)
def start_profiling(self):
self._previous_loop_ts = self._clock.time_msec()
diff --git a/synapse/storage/push_rule.py b/synapse/storage/push_rule.py
index 34805e276e..e7988676ce 100644
--- a/synapse/storage/push_rule.py
+++ b/synapse/storage/push_rule.py
@@ -204,11 +204,21 @@ class PushRuleStore(SQLBaseStore):
@defer.inlineCallbacks
def set_push_rule_enabled(self, user_name, rule_id, enabled):
- yield self._simple_upsert(
+ ret = yield self.runInteraction(
+ "_set_push_rule_enabled_txn",
+ self._set_push_rule_enabled_txn,
+ user_name, rule_id, enabled
+ )
+ defer.returnValue(ret)
+
+ def _set_push_rule_enabled_txn(self, txn, user_name, rule_id, enabled):
+ new_id = self._push_rules_enable_id_gen.get_next_txn(txn)
+ self._simple_upsert_txn(
+ txn,
PushRuleEnableTable.table_name,
{'user_name': user_name, 'rule_id': rule_id},
{'enabled': 1 if enabled else 0},
- desc="set_push_rule_enabled",
+ {'id': new_id},
)
|