def test_find_by_sid_and_distributor(self): self._insert_rows() items = Subscription.find_by_sid_and_distributor(self.env, 'joe', True, 'xmpp') self.assertEqual(['joe'] * 3, self._props(items, 'sid')) self.assertEqual([1] * 3, self._props(items, 'authenticated')) self.assertEqual(['xmpp'] * 3, self._props(items, 'distributor')) self.assertEqual(['text/html', 'text/plain', 'text/html'], self._props(items, 'format')) self.assertEqual([1, 2, 3], self._props(items, 'priority')) self.assertEqual(['always', 'never', 'never'], self._props(items, 'adverb')) self.assertEqual(['XmppSubscriber1', 'XmppSubscriber2', 'XmppSubscriber3'], self._props(items, 'class'))
def _iter_rules(self, req, transport): session = req.session for r in Subscription.find_by_sid_and_distributor( self.env, session.sid, session.authenticated, transport): yield r
def render_preference_panel(self, req, panel, path_info=None): if req.method == 'POST': action_arg = req.args.get('action', '') m = re.match('^([^_]+)_(.+)', action_arg) if m: action, arg = m.groups() handler = self.post_handlers.get(action) if handler: handler(arg, req) add_notice(req, _("Your preferences have been saved.")) req.redirect(req.href.prefs('notification')) data = {'rules':{}, 'subscribers':[]} desc_map = {} defaults = [] data['formatters'] = {} data['selected_format'] = {} data['adverbs'] = ('always', 'never') data['adverb_labels'] = dict(always=_("Notify"), never=_("Never notify")) for i in self.subscribers: if not i.description(): continue if not req.session.authenticated and i.requires_authentication(): continue data['subscribers'].append({ 'class': i.__class__.__name__, 'description': i.description() }) desc_map[i.__class__.__name__] = i.description() if hasattr(i, 'default_subscriptions'): defaults.extend(i.default_subscriptions()) for t in self._iter_transports(): data['rules'][t] = [] styles = self._get_supported_styles(t) data['formatters'][t] = styles data['selected_format'][t] = styles[0] for r in Subscription.find_by_sid_and_distributor(self.env, req.session.sid, req.session.authenticated, t): if desc_map.get(r['class']): data['rules'][t].append({ 'id': r['id'], 'adverb': r['adverb'], 'class': r['class'], 'description': desc_map[r['class']], 'priority': r['priority'] }) data['selected_format'][t] = r['format'] data['default_rules'] = {} for r in sorted(defaults, key=itemgetter(3)): klass, dist, format, priority, adverb = r if not data['default_rules'].get(dist): data['default_rules'][dist] = [] if desc_map.get(klass): data['default_rules'][dist].append({ 'adverb': adverb, 'description': desc_map.get(klass) }) Chrome(self.env).add_jquery_ui(req) return 'prefs_notification.html', dict(data=data)
def render_preference_panel(self, req, panel, path_info=None): if req.method == 'POST': action_arg = req.args.get('action', '') m = re.match('^([^_]+)_(.+)', action_arg) if m: action, arg = m.groups() handler = self.post_handlers.get(action) if handler: handler(arg, req) add_notice(req, _("Your preferences have been saved.")) req.redirect(req.href.prefs('notification')) data = {'rules': {}, 'subscribers': []} desc_map = {} defaults = [] data['formatters'] = {} data['selected_format'] = {} data['adverbs'] = ('always', 'never') data['adverb_labels'] = dict(always=_("Notify"), never=_("Never notify")) for i in self.subscribers: if not i.description(): continue if not req.session.authenticated and i.requires_authentication(): continue data['subscribers'].append({ 'class': i.__class__.__name__, 'description': i.description() }) desc_map[i.__class__.__name__] = i.description() if hasattr(i, 'default_subscriptions'): defaults.extend(i.default_subscriptions()) for t in self._iter_transports(): data['rules'][t] = [] styles = self._get_supported_styles(t) data['formatters'][t] = styles data['selected_format'][t] = styles[0] for r in Subscription.find_by_sid_and_distributor( self.env, req.session.sid, req.session.authenticated, t): if desc_map.get(r['class']): data['rules'][t].append({ 'id': r['id'], 'adverb': r['adverb'], 'class': r['class'], 'description': desc_map[r['class']], 'priority': r['priority'] }) data['selected_format'][t] = r['format'] data['default_rules'] = {} for r in sorted(defaults, key=itemgetter(3)): klass, dist, format, priority, adverb = r if not data['default_rules'].get(dist): data['default_rules'][dist] = [] if desc_map.get(klass): data['default_rules'][dist].append({ 'adverb': adverb, 'description': desc_map.get(klass) }) Chrome(self.env).add_jquery_ui(req) return 'prefs_notification.html', dict(data=data)