예제 #1
0
    def _topic_callback(self):
        self.topic_lock.acquire()

        sections = {
            lambda: len(TestingRCBugs().get_bugs()): 'RC bug count:',
            NewQueue().get_size: 'NEW queue:',
            RmQueue().get_size: 'RM queue:',
        }

        try:
            values = {}
            for callback, prefix in sections.iteritems():
                values[callback] = callback()

            for channel in self.irc.state.channels:
                new_topic = topic = self.irc.state.getTopic(channel)

                for callback, prefix in sections.iteritems():
                    if values[callback]:
                        new_topic = rewrite_topic(new_topic, prefix, values[callback])

                if topic != new_topic:
                    log.info("Queueing change of topic in #%s to '%s'" % (channel, new_topic))
                    self.queued_topics[channel] = new_topic

                    event_name = '%s_topic' % channel
                    try:
                        schedule.removeEvent(event_name)
                    except KeyError:
                        pass
                    schedule.addEvent(lambda channel=channel: self._update_topic(channel),
                        time.time() + 60, event_name)
        finally:
            self.topic_lock.release()
예제 #2
0
    def _topic_callback(self):
        sections = {
            self.testing_rc_bugs.get_number_bugs: 'RC bug count',
            self.stable_rc_bugs.get_number_bugs: 'Stable RC bug count',
            self.new_queue.get_size: 'NEW queue',
            RmQueue().get_size: 'RM queue',
        }

        with self.topic_lock:
            values = {}
            for callback, prefix in sections.iteritems():
                values[callback] = callback()

            for channel in self.irc.state.channels:
                new_topic = topic = self.irc.state.getTopic(channel)

                for callback, prefix in sections.iteritems():
                    if values[callback]:
                        new_topic = rewrite_topic(new_topic, prefix, values[callback])

                if topic != new_topic:
                    log.info("Queueing change of topic in #%s to '%s'" % (channel, new_topic))
                    self.queued_topics[channel] = new_topic

                    event_name = '%s_topic' % channel
                    try:
                        schedule.removeEvent(event_name)
                    except KeyError:
                        pass
                    schedule.addEvent(lambda channel=channel: self._update_topic(channel),
                        time.time() + 60, event_name)
 def testEmbedded2(self):
     self.assertEqual(
         rewrite_topic(
             "pre | RC bug count: 1 | Stable RC bug count: 3 | post",
             "RC bug count",
             2,
         ),
         "pre | RC bug count: 2 | Stable RC bug count: 3 | post",
     )
예제 #4
0
    def _topic_callback(self):
        sections = {
            self.testing_rc_bugs.get_number_bugs: "RC bug count",
            self.stable_rc_bugs.get_number_bugs: "stable RC bug count",
            self.new_queue.get_size: "NEW queue",
            self.new_queue.get_backports_size: "backports NEW queue",
            self.rm_queue.get_size: "RM queue",
            self.dinstall.get_status: "dinstall",
        }

        channels = set()
        with self.topic_lock:
            values = {}
            for callback, prefix in sections.items():
                new_value = callback()
                if new_value is not None:
                    values[prefix] = new_value

            for channel in self.irc.state.channels:
                new_topic = topic = self.irc.state.getTopic(channel)

                for prefix, value in values.items():
                    new_topic = rewrite_topic(new_topic, prefix, value)

                if topic != new_topic:
                    self.queued_topics[channel] = new_topic

                    if channel not in channels:
                        log.info("Queueing change of topic in #%s to '%s'" %
                                 (channel, new_topic))
                        channels.add(channel)

        for channel in channels:
            event_name = "{}_topic".format(channel)
            try:
                schedule.removeEvent(event_name)
            except KeyError:
                pass

            def update_topic(channel=channel):
                self._update_topic(channel)

            schedule.addEvent(update_topic, time.time() + 60, event_name)
예제 #5
0
    def _topic_callback(self):
        sections = {
            self.testing_rc_bugs.get_number_bugs: 'RC bug count',
            self.stable_rc_bugs.get_number_bugs: 'stable RC bug count',
            self.new_queue.get_size: 'NEW queue',
            self.new_queue.get_backports_size: 'backports NEW queue',
            self.rm_queue.get_size: 'RM queue',
            self.dinstall.get_status: 'dinstall'
        }

        channels = set()
        with self.topic_lock:
            values = {}
            for callback, prefix in sections.items():
                new_value = callback()
                if new_value is not None:
                    values[prefix] = new_value

            for channel in self.irc.state.channels:
                new_topic = topic = self.irc.state.getTopic(channel)

                for prefix, value in values.items():
                    new_topic = rewrite_topic(new_topic, prefix, value)

                if topic != new_topic:
                    self.queued_topics[channel] = new_topic

                    if channel not in channels:
                        log.info("Queueing change of topic in #%s to '%s'" %
                                 (channel, new_topic))
                        channels.add(channel)

        for channel in channels:
            event_name = '{}_topic'.format(channel)
            try:
                schedule.removeEvent(event_name)
            except KeyError:
                pass

            def update_topic(channel=channel):
                self._update_topic(channel)

            schedule.addEvent(update_topic, time.time() + 60, event_name)
 def testEmbedded(self):
     self.assertEqual(
         rewrite_topic("pre | RC bug count: 1 | post", "RC bug count", 2),
         "pre | RC bug count: 2 | post")
 def testSimple(self):
     self.assertEqual(rewrite_topic("RC bug count: 1", "RC bug count", 2),
                      "RC bug count: 2")
 def testEmpty(self):
     self.assertEqual(rewrite_topic("", "", 0), "")
 def testEmbedded(self):
     self.assertEqual(rewrite_topic("pre RC bug count: 1 post", "RC bug count:", 2), "pre RC bug count: 2 post")
 def testSimple(self):
     self.assertEqual(rewrite_topic("RC bug count: 1", "RC bug count:", 2), "RC bug count: 2")
 def testEmpty(self):
     self.assertEqual(rewrite_topic("", "", 0), "")
 def testEmbedded2(self):
     self.assertEqual(rewrite_topic("pre | RC bug count: 1 | Stable RC bug count: 3 | post",
                                    "RC bug count", 2),
                      "pre | RC bug count: 2 | Stable RC bug count: 3 | post")