def _move_rule(self, arg, req): tokens = [as_int(val, 0) for val in arg.split('-', 1)] if len(tokens) == 2: rule_id, priority = tokens if rule_id > 0 and priority > 0: session = req.session Subscription.move(self.env, rule_id, priority, session.sid, session.authenticated)
def test_move(self): def query_subs(): return self.env.db_query( """\ SELECT distributor, priority, class FROM notify_subscription WHERE sid=%s AND authenticated=%s ORDER BY distributor, priority""", ('joe', 1)) req = MockRequest(self.env, authname='joe') with self.env.db_transaction: rule_ids = {} for class_, distributor in [('EmailSubscriber1', 'email'), ('EmailSubscriber2', 'email'), ('EmailSubscriber3', 'email'), ('EmailSubscriber4', 'email'), ('XmppSubscriber1', 'xmpp'), ('XmppSubscriber2', 'xmpp')]: rule_ids[(class_, distributor)] = \ self._add_subscriber(req, class_, distributor) self.assertEqual([ ('email', 1, 'EmailSubscriber1'), ('email', 2, 'EmailSubscriber2'), ('email', 3, 'EmailSubscriber3'), ('email', 4, 'EmailSubscriber4'), ('xmpp', 1, 'XmppSubscriber1'), ('xmpp', 2, 'XmppSubscriber2'), ], query_subs()) Subscription.move(self.env, rule_ids[('EmailSubscriber3', 'email')], 1) self.assertEqual([ ('email', 1, 'EmailSubscriber3'), ('email', 2, 'EmailSubscriber1'), ('email', 3, 'EmailSubscriber2'), ('email', 4, 'EmailSubscriber4'), ('xmpp', 1, 'XmppSubscriber1'), ('xmpp', 2, 'XmppSubscriber2'), ], query_subs()) Subscription.move(self.env, rule_ids[('EmailSubscriber1', 'email')], 4) self.assertEqual([ ('email', 1, 'EmailSubscriber3'), ('email', 2, 'EmailSubscriber2'), ('email', 3, 'EmailSubscriber4'), ('email', 4, 'EmailSubscriber1'), ('xmpp', 1, 'XmppSubscriber1'), ('xmpp', 2, 'XmppSubscriber2'), ], query_subs()) Subscription.move(self.env, rule_ids[('EmailSubscriber3', 'email')], 3) self.assertEqual([ ('email', 1, 'EmailSubscriber2'), ('email', 2, 'EmailSubscriber4'), ('email', 3, 'EmailSubscriber3'), ('email', 4, 'EmailSubscriber1'), ('xmpp', 1, 'XmppSubscriber1'), ('xmpp', 2, 'XmppSubscriber2'), ], query_subs())
def _move_rule(self, arg, req): (rule_id, new_priority) = arg.split('-') if int(new_priority) >= 1: Subscription.move(self.env, rule_id, int(new_priority))