Example #1
0
    def command_rehash(self, user, channel, args):
        """Reload modules and optionally the configuration file. Usage: rehash [conf]"""

        if self.factory.isAdmin(user):
            try:
                # rebuild core & update
                log.info("rebuilding %r" % self)
                rebuild.updateInstance(self)

                # reload config file
                if args == 'conf':
                    self.factory.reload_config()
                    self.say(channel, 'Configuration reloaded.')

                # unload removed modules
                self.factory._unload_removed_modules()
                # reload modules
                self.factory._loadmodules()
            except Exception, e:
                self.say(channel, "Rehash error: %s" % e)
                log.error("Rehash error: %s" % e)
            else:
                self.save_words_to_file()
                self.say(channel, "Rehash OK")
                log.info("Rehash OK")
Example #2
0
    def command_rehash(self, user, channel, args):
        """Reload modules and optionally the configuration file. Usage: rehash [conf]"""

        if self.factory.isAdmin(user):
            try:
                # rebuild core & update
                log.info("rebuilding %r" % self)
                rebuild.updateInstance(self)

                # reload config file
                if args == 'conf':
                    self.factory.reload_config()
                    self.say(channel, 'Configuration reloaded.')

                # unload removed modules
                self.factory._unload_removed_modules()
                # reload modules
                self.factory._loadmodules()
            except Exception, e:
                self.say(channel, "Rehash error: %s" % e)
                log.error("Rehash error: %s" % e)
            else:
                self.save_words_to_file()
                self.say(channel, "Rehash OK")
                log.info("Rehash OK")
Example #3
0
 def testUpdateInstance(self):
     global Foo, Buz
     b = Buz()
     class Foo:
         def foo(self):
             pass
     class Buz(Bar, Baz):
         x = 10
     rebuild.updateInstance(b)
     assert hasattr(b, 'foo'), "Missing method on rebuilt instance"
     assert hasattr(b, 'x'), "Missing class attribute on rebuilt instance"
Example #4
0
    def test_typeSubclass(self):
        """
        Try to rebuild a base type subclass.
        """
        classDefinition = ("class ListSubclass(list):\n" "    pass\n")

        exec classDefinition in self.m.__dict__
        inst = self.m.ListSubclass()
        inst.append(2)
        exec classDefinition in self.m.__dict__
        rebuild.updateInstance(inst)
        self.assertEqual(inst[0], 2)
        self.assertIdentical(type(inst), self.m.ListSubclass)
Example #5
0
    def test_slots(self):
        """
        Try to rebuild a new style class with slots defined.
        """
        classDefinition = "class SlottedClass:\n" "    __slots__ = ['a']\n"

        exec(classDefinition, self.m.__dict__)
        inst = self.m.SlottedClass()
        inst.a = 7
        exec(classDefinition, self.m.__dict__)
        rebuild.updateInstance(inst)
        self.assertEqual(inst.a, 7)
        self.assertIs(type(inst), self.m.SlottedClass)
Example #6
0
    def test_typeSubclass(self):
        """
        Try to rebuild a base type subclass.
        """
        classDefinition = "class ListSubclass(list):\n" "    pass\n"

        exec classDefinition in self.m.__dict__
        inst = self.m.ListSubclass()
        inst.append(2)
        exec classDefinition in self.m.__dict__
        rebuild.updateInstance(inst)
        self.assertEqual(inst[0], 2)
        self.assertIdentical(type(inst), self.m.ListSubclass)
Example #7
0
    def command_rehash(self, user, channel, args):
        """Reload modules. Usage: rehash [debug]"""

        try:
            # rebuild core & update
            log.info("rebuilding %r" % self)
            rebuild.updateInstance(self)

            self.factory._loadmodules()

        except Exception, e:
            self.say(channel, "Rehash error: %s" % e)
            log.error("Rehash error: %s" % e)
Example #8
0
    def test_slots(self):
        """
        Try to rebuild a new style class with slots defined.
        """
        classDefinition = "class SlottedClass(object):\n" "    __slots__ = ['a']\n"

        exec classDefinition in self.m.__dict__
        inst = self.m.SlottedClass()
        inst.a = 7
        exec classDefinition in self.m.__dict__
        rebuild.updateInstance(inst)
        self.assertEqual(inst.a, 7)
        self.assertIdentical(type(inst), self.m.SlottedClass)
Example #9
0
    def test_slots(self):
        """
        Try to rebuild a new style class with slots defined.
        """
        classDefinition = ("class SlottedClass(object):\n"
                           "    __slots__ = ['a']\n")

        exec classDefinition in self.m.__dict__
        inst = self.m.SlottedClass()
        inst.a = 7
        exec classDefinition in self.m.__dict__
        rebuild.updateInstance(inst)
        self.assertEqual(inst.a, 7)
        self.assertIdentical(type(inst), self.m.SlottedClass)
Example #10
0
    def testUpdateInstance(self):
        global Foo, Buz

        b = Buz()

        class Foo:
            def foo(self):
                pass
        class Buz(Bar, Baz):
            x = 10

        rebuild.updateInstance(b)
        assert hasattr(b, 'foo'), "Missing method on rebuilt instance"
        assert hasattr(b, 'x'), "Missing class attribute on rebuilt instance"
def command_rehash(bot, user, channel, args):
    "Rehashes all available modules to reflect any changes."

    if permissions(user) < 20:  # 0 public, 1-9 undefined, 10-19 admin, 20 root
        return bot.say(channel, "{}, insufficient permissions.".format(
                       get_nick(user)))

    try:
        log.info("Rebuilding {}".format(bot))
        rebuild.updateInstance(bot)
        bot.factory._unload_removed_modules()
        bot.factory._loadmodules()
    except Exception, e:
        log.error("Rehash error: {}.".format(e))
        return bot.say(channel, "Rehash error: {}.".format(e))
Example #12
0
    def test_UpdateInstance(self):
        global Foo, Buz

        b = Buz()

        class Foo:
            def foo(self):
                """
                Dummy method
                """

        class Buz(Bar, Baz):
            x = 10

        rebuild.updateInstance(b)
        assert hasattr(b, "foo"), "Missing method on rebuilt instance"
        assert hasattr(b, "x"), "Missing class attribute on rebuilt instance"
Example #13
0
    def command_rehash(self, user, channel, args):
        """Reload modules. Usage: rehash [debug]"""

        if self.factory.isAdmin(user):
            try:
                # rebuild core & update
                log.info("rebuilding %r" % self)
                rebuild.updateInstance(self)

                self.factory._loadmodules()

            except Exception, e:
                self.say(channel, "Rehash error: %s" % e)
                log.error("Rehash error: %s" % e)
            else:
                self.say(channel, "Rehash OK")
                log.info("Rehash OK")
Example #14
0
    def privcommand_rehash(self, user, channel, args):
        """Reload modules. Usage: rehash [debug]"""

        lvl = self.checkValidHostmask(user)
        if lvl and lvl > 4:
            try:
                # rebuild core & update
                log.info("rebuilding %r" % self)
                rebuild.updateInstance(self)

                self.factory._loadmodules()

            except Exception, e:
                self.say(channel, "Rehash error: %s" % e)
                log.error("Rehash error: " + e)
            else:
                self.say(channel, "Rehash OK")
                log.info("Rehash OK")
Example #15
0
 def testTypeSubclass(self):
     exec "class ListSubclass(list): pass" in self.m.__dict__
     rebuild.updateInstance(self.m.ListSubclass())
Example #16
0
 def testSlots(self):
     exec "class SlottedClass(object): __slots__ = 'a'," in self.m.__dict__
     rebuild.updateInstance(self.m.SlottedClass())
Example #17
0
 def testTypeSubclass(self):
     exec "class ListSubclass(list): pass" in self.m.__dict__
     rebuild.updateInstance(self.m.ListSubclass())
Example #18
0
 def testSlots(self):
     exec "class SlottedClass(object): __slots__ = 'a'," in self.m.__dict__
     rebuild.updateInstance(self.m.SlottedClass())