Ejemplo n.º 1
0
    def render_announcement_preference_box(self, req, panel):
        klass = self.__class__.__name__

        if req.method == "POST":
            with self.env.db_transaction as db:
                SubscriptionAttribute.\
                    delete_by_sid_and_class(self.env, req.session.sid,
                                            req.session.authenticated,
                                            klass, db)

                def _map(value):
                    g = re.match('^joinable_group_(.*)', value)
                    if g:
                        if req.args.as_bool(value):
                            return g.groups()[0]

                groups = set(filter(None, map(_map, req.args.keys())))
                SubscriptionAttribute.add(self.env, req.session.sid,
                                          req.session.authenticated, klass,
                                          'ticket', groups, db)

        attrs = filter(None, map(
            lambda x: x['target'],
            SubscriptionAttribute.find_by_sid_and_class(
                self.env, req.session.sid, req.session.authenticated, klass
            )
        ))
        data = dict(joinable_groups={})
        for group in self.joinable_groups:
            data['joinable_groups'][group] = (group in attrs) and True or None
        return 'prefs_announcer_joinable_groups.html', data
Ejemplo n.º 2
0
    def render_announcement_preference_box(self, req, panel):
        klass = self.__class__.__name__

        if req.method == 'POST':
            with self.env.db_transaction as db:
                sess = req.session
                SubscriptionAttribute\
                    .delete_by_sid_and_class(self.env, sess.sid,
                                             sess.authenticated,
                                             klass, db)
                users = map(lambda x: x.strip(),
                            req.args.get('announcer_watch_users').split(','))
                SubscriptionAttribute.add(self.env, sess.sid,
                                          sess.authenticated, klass, 'user',
                                          users, db)

        attrs = filter(
            None,
            map(
                lambda x: x['target'],
                SubscriptionAttribute.find_by_sid_and_class(
                    self.env, req.session.sid, req.session.authenticated,
                    klass)))
        data = dict(announcer_watch_users=','.join(attrs))
        return 'prefs_announcer_watch_users.html', data
Ejemplo n.º 3
0
    def render_announcement_preference_box(self, req, panel):
        klass = self.__class__.__name__
        if req.method == "POST":
            with self.env.db_transaction as db:
                SubscriptionAttribute.\
                    delete_by_sid_and_class(self.env, req.session.sid,
                                            req.session.authenticated,
                                            klass, db)

                def _map(value):
                    g = re.match('^component_(.*)', value)
                    if g:
                        if req.args.as_bool(value):
                            return g.groups()[0]

                components = set(filter(None, map(_map, req.args.keys())))
                SubscriptionAttribute.add(self.env, req.session.sid,
                                          req.session.authenticated, klass,
                                          'ticket', components, db)

        d = {}
        attrs = filter(None, map(
            lambda x: x['target'],
            SubscriptionAttribute.find_by_sid_and_class(
                self.env, req.session.sid, req.session.authenticated, klass
            )
        ))
        for c in model.Component.select(self.env):
            if c.name in attrs:
                d[c.name] = True
            else:
                d[c.name] = None

        return 'prefs_announcer_joinable_components.html', dict(components=d)
Ejemplo n.º 4
0
    def render_announcement_preference_box(self, req, panel):
        klass = self.__class__.__name__

        if req.method == "POST":
            with self.env.db_transaction as db:
                SubscriptionAttribute.\
                    delete_by_sid_and_class(self.env, req.session.sid,
                                            req.session.authenticated,
                                            klass, db)

                def _map(value):
                    g = re.match('^joinable_group_(.*)', value)
                    if g:
                        if req.args.as_bool(value):
                            return g.groups()[0]

                groups = set(filter(None, map(_map, req.args.keys())))
                SubscriptionAttribute.add(self.env, req.session.sid,
                                          req.session.authenticated, klass,
                                          'ticket', groups, db)

        attrs = filter(
            None,
            map(
                lambda x: x['target'],
                SubscriptionAttribute.find_by_sid_and_class(
                    self.env, req.session.sid, req.session.authenticated,
                    klass)))
        data = dict(joinable_groups={})
        for group in self.joinable_groups:
            data['joinable_groups'][group] = (group in attrs) and True or None
        return 'prefs_announcer_joinable_groups.html', data
Ejemplo n.º 5
0
    def render_announcement_preference_box(self, req, panel):
        klass = self.__class__.__name__
        if req.method == "POST":
            with self.env.db_transaction as db:
                SubscriptionAttribute.\
                    delete_by_sid_and_class(self.env, req.session.sid,
                                            req.session.authenticated,
                                            klass, db)

                def _map(value):
                    g = re.match('^component_(.*)', value)
                    if g:
                        if req.args.as_bool(value):
                            return g.groups()[0]

                components = set(filter(None, map(_map, req.args.keys())))
                SubscriptionAttribute.add(self.env, req.session.sid,
                                          req.session.authenticated, klass,
                                          'ticket', components, db)

        d = {}
        attrs = filter(
            None,
            map(
                lambda x: x['target'],
                SubscriptionAttribute.find_by_sid_and_class(
                    self.env, req.session.sid, req.session.authenticated,
                    klass)))
        for c in model.Component.select(self.env):
            if c.name in attrs:
                d[c.name] = True
            else:
                d[c.name] = None

        return 'prefs_announcer_joinable_components.html', dict(components=d)
Ejemplo n.º 6
0
 def do_update(db):
     SubscriptionAttribute.delete_by_sid_and_class(self.env,
             req.session.sid, req.session.authenticated, klass, db)
     users = map(lambda x: x.strip(),
             req.args.get("announcer_watch_users").split(','))
     SubscriptionAttribute.add(self.env, req.session.sid,
             req.session.authenticated, klass, 'user', users, db)
Ejemplo n.º 7
0
 def do_update(db):
     SubscriptionAttribute.delete_by_sid_and_class(
         self.env, sess.sid, sess.authenticated, klass, db)
     SubscriptionAttribute.add(self.env, sess.sid,
                               sess.authenticated, klass, 'wiki',
                               (req.args.get('wiki_interests'), ),
                               db)
Ejemplo n.º 8
0
 def do_update(db):
     SubscriptionAttribute.delete_by_sid_and_class(
         self.env, req.session.sid, req.session.authenticated, klass)
     blogs = set(map(lambda x: x.strip(),
         req.args.get('announcer_watch_bloggers').split(',')))
     SubscriptionAttribute.add(self.env, req.session.sid,
             req.session.authenticated, klass, 'blog', blogs)
Ejemplo n.º 9
0
 def do_update(db):
     sess = req.session
     SubscriptionAttribute.delete_by_sid_and_class(
         self.env, sess.sid, sess.authenticated, klass, db)
     users = map(lambda x: x.strip(),
                 req.args.get("announcer_watch_users").split(','))
     SubscriptionAttribute.add(self.env, sess.sid,
                               sess.authenticated, klass, 'user',
                               users, db)
Ejemplo n.º 10
0
 def do_update(db):
     SubscriptionAttribute.delete_by_sid_and_class(
         self.env, req.session.sid, req.session.authenticated,
         klass)
     blogs = set(
         map(lambda x: x.strip(),
             req.args.get('announcer_watch_bloggers').split(',')))
     SubscriptionAttribute.add(self.env, req.session.sid,
                               req.session.authenticated, klass,
                               'blog', blogs)
Ejemplo n.º 11
0
 def do_update(db):
     SubscriptionAttribute.delete_by_sid_and_class(self.env,
             req.session.sid, req.session.authenticated, klass, db)
     def _map(value):
         g = re.match('^joinable_group_(.*)', value)
         if g:
             if istrue(req.args.get(value)):
                 return g.groups()[0]
     groups = set(filter(None, map(_map,req.args.keys())))
     SubscriptionAttribute.add(self.env, req.session.sid,
         req.session.authenticated, klass, 'ticket', groups, db)
Ejemplo n.º 12
0
            def do_update(db):
                SubscriptionAttribute.delete_by_sid_and_class(
                    self.env, req.session.sid, req.session.authenticated, klass, db
                )

                def _map(value):
                    g = re.match("^component_(.*)", value)
                    if g:
                        if istrue(req.args.get(value)):
                            return g.groups()[0]

                components = set(filter(None, map(_map, req.args.keys())))
                SubscriptionAttribute.add(
                    self.env, req.session.sid, req.session.authenticated, klass, "ticket", components, db
                )
Ejemplo n.º 13
0
            def do_update(db):
                SubscriptionAttribute.delete_by_sid_and_class(
                    self.env, req.session.sid, req.session.authenticated,
                    klass, db)

                def _map(value):
                    g = re.match('^component_(.*)', value)
                    if g:
                        if istrue(req.args.get(value)):
                            return g.groups()[0]

                components = set(filter(None, map(_map, req.args.keys())))
                SubscriptionAttribute.add(self.env, req.session.sid,
                                          req.session.authenticated, klass,
                                          'ticket', components, db)
Ejemplo n.º 14
0
 def do_update(db):
     attrs = SubscriptionAttribute.find_by_sid_class_and_target(
         self.env, req.session.sid, req.session.authenticated,
         klass, name)
     if attrs:
         SubscriptionAttribute.delete_by_sid_class_and_target(
             self.env, req.session.sid, req.session.authenticated,
             klass, name)
         req.session['_blog_watch_message_'] = \
             _('You are no longer watching this blog post.')
     else:
         SubscriptionAttribute.add(
             self.env, req.session.sid, req.session.authenticated,
             klass, 'blog', (name,))
         req.session['_blog_watch_message_'] = \
                 _('You are now watching this blog post.')
Ejemplo n.º 15
0
 def do_update(db):
     attrs = SubscriptionAttribute.find_by_sid_class_and_target(
         self.env, req.session.sid, req.session.authenticated, klass,
         name)
     if attrs:
         SubscriptionAttribute.delete_by_sid_class_and_target(
             self.env, req.session.sid, req.session.authenticated,
             klass, name)
         req.session['_blog_watch_message_'] = \
             _('You are no longer watching this blog post.')
     else:
         SubscriptionAttribute.add(self.env, req.session.sid,
                                   req.session.authenticated, klass,
                                   'blog', (name, ))
         req.session['_blog_watch_message_'] = \
                 _('You are now watching this blog post.')
Ejemplo n.º 16
0
    def test_add_delete(self):
        attr = SubscriptionAttribute(self.env)
        attr.add(self.env, 'user', 1, 'GeneralWikiSubscriber','wiki',
                 ('TracWiki', 'TracWiki'))
        cursor = self.db.cursor()
        cursor.execute("SELECT COUNT(*) FROM subscription_attribute")
        count = cursor.fetchone()
        self.assertEqual(count[0], 2)

        attr.delete(self.env, 1)
        # Make sure, that we really deleted the 1st attribute.
        cursor.execute("SELECT target FROM subscription_attribute")
        for attribute in cursor.fetchone():
            self.assertEqual(attribute, 'TracWiki')
        cursor.execute("SELECT COUNT(*) FROM subscription_attribute")
        count = cursor.fetchone()
        self.assertEqual(count[0], 1)
        # Deleting non-existent subscriptions is handled gracefully.
        attr.delete(self.env, 1)
Ejemplo n.º 17
0
    def render_announcement_preference_box(self, req, panel):
        klass = self.__class__.__name__

        if req.method == "POST":
            with self.env.db_transaction:
                SubscriptionAttribute.delete_by_sid_and_class(
                    self.env, req.session.sid, req.session.authenticated,
                    klass)
                blogs = set(map(lambda x: x.strip(),
                                req.args.get(
                                    'announcer_watch_bloggers').split(',')))
                SubscriptionAttribute.add(self.env, req.session.sid,
                                          req.session.authenticated, klass,
                                          'blog', blogs)

        attrs = SubscriptionAttribute.\
            find_by_sid_and_class(self.env, req.session.sid,
                                  req.session.authenticated, klass)
        data = {'sids': ','.join(set(map(lambda x: x['target'], attrs)))}
        return 'prefs_announcer_watch_bloggers.html', dict(data=data)
Ejemplo n.º 18
0
    def render_announcement_preference_box(self, req, panel):
        klass = self.__class__.__name__
        sess = req.session

        if req.method == 'POST':
            with self.env.db_transaction as db:
                SubscriptionAttribute.\
                    delete_by_sid_and_class(self.env, sess.sid,
                                            sess.authenticated, klass, db)
                SubscriptionAttribute.add(self.env, sess.sid,
                                          sess.authenticated, klass, 'wiki',
                                          (req.args.get('wiki_interests'), ),
                                          db)

        (interests, ) = SubscriptionAttribute.find_by_sid_and_class(
            self.env, sess.sid, sess.authenticated, klass) or ({
                'target': ''
            }, )

        return 'prefs_announcer_wiki.html', dict(wiki_interests='\n'.join(
            urllib.unquote(x) for x in interests['target'].split(' ')))
Ejemplo n.º 19
0
    def render_announcement_preference_box(self, req, panel):
        klass = self.__class__.__name__
        sess = req.session

        if req.method == 'POST':
            with self.env.db_transaction as db:
                SubscriptionAttribute.\
                    delete_by_sid_and_class(self.env, sess.sid,
                                            sess.authenticated, klass, db)
                SubscriptionAttribute.add(self.env, sess.sid,
                                          sess.authenticated, klass, 'wiki',
                                          (req.args.get('wiki_interests'),),
                                          db)

        (interests,) = SubscriptionAttribute.find_by_sid_and_class(
            self.env, sess.sid, sess.authenticated, klass) or (
                       {'target': ''},)

        return 'prefs_announcer_wiki.html', dict(
            wiki_interests='\n'.join(
                urllib.unquote(x) for x in interests['target'].split(' ')))
Ejemplo n.º 20
0
    def render_announcement_preference_box(self, req, panel):
        klass = self.__class__.__name__

        if req.method == 'POST':
            with self.env.db_transaction as db:
                sess = req.session
                SubscriptionAttribute\
                    .delete_by_sid_and_class(self.env, sess.sid,
                                             sess.authenticated,
                                             klass, db)
                users = map(lambda x: x.strip(),
                            req.args.get('announcer_watch_users').split(','))
                SubscriptionAttribute.add(self.env, sess.sid,
                                          sess.authenticated, klass, 'user',
                                          users, db)

        attrs = filter(None, map(
            lambda x: x['target'],
            SubscriptionAttribute.find_by_sid_and_class(
                self.env, req.session.sid, req.session.authenticated, klass
            )
        ))
        data = dict(announcer_watch_users=','.join(attrs))
        return 'prefs_announcer_watch_users.html', data
Ejemplo n.º 21
0
    def process_request(self, req):
        klass = self.__class__.__name__

        m = re.match(r'^/blog_watch/(.*)', req.path_info)
        (name,) = m.groups()

        with self.env.db_transaction:
            attrs = SubscriptionAttribute.find_by_sid_class_and_target(
                self.env, req.session.sid, req.session.authenticated,
                klass, name)
            if attrs:
                SubscriptionAttribute.delete_by_sid_class_and_target(
                    self.env, req.session.sid, req.session.authenticated,
                    klass, name)
                req.session['_blog_watch_message_'] = \
                    _("You are no longer watching this blog post.")
            else:
                SubscriptionAttribute.add(
                    self.env, req.session.sid, req.session.authenticated,
                    klass, 'blog', (name,))
                req.session['_blog_watch_message_'] = \
                    _("You are now watching this blog post.")

        req.redirect(req.href.blog(name))
Ejemplo n.º 22
0
 def set_watch(self, sid, authenticated, realm, target):
     klass = self.__class__.__name__
     SubscriptionAttribute.add(self.env, sid, authenticated, klass, realm,
                               (target, ))
Ejemplo n.º 23
0
 def do_update(db):
     SubscriptionAttribute.delete_by_sid_and_class(self.env,
             req.session.sid, req.session.authenticated, klass, db)
     SubscriptionAttribute.add(self.env, req.session.sid,
         req.session.authenticated, klass,
         'wiki', req.args.get('wiki_interests', db))
Ejemplo n.º 24
0
 def do_update(db):
     SubscriptionAttribute.delete_by_sid_and_class(self.env, sess.sid, sess.authenticated, klass, db)
     SubscriptionAttribute.add(
         self.env, sess.sid, sess.authenticated, klass, "wiki", (req.args.get("wiki_interests"),), db
     )
Ejemplo n.º 25
0
 def set_watch(self, sid, authenticated, realm, target):
     klass = self.__class__.__name__
     SubscriptionAttribute.add(self.env, sid, authenticated, klass,
                               realm, (target,))