コード例 #1
0
ファイル: model.py プロジェクト: mugglecloud/trac
 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'))
コード例 #2
0
ファイル: prefs.py プロジェクト: rwbaumg/trac
 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
コード例 #3
0
ファイル: prefs.py プロジェクト: pkdevbox/trac
    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)
コード例 #4
0
ファイル: prefs.py プロジェクト: vidhya-maddisetty/trac
    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)