Beispiel #1
0
    def test_settings_load_rawdata(self):
        group = self._create_default_group()

        get_settings()._load({'group.node1': 'val1'})

        # new value
        self.assertEqual(group['node1'], 'val1')

        # default value
        self.assertEqual(group['node2'], 10)
Beispiel #2
0
    def test_settings_init_with_no_loader_with_defaults(self):
        group = self._create_default_group()

        get_settings().init({'group.node1': 'new-default',
                             'group.node2': 50})

        self.assertEqual(group['node1'], 'new-default')
        self.assertEqual(group['node2'], 50)

        self.assertEqual(group.schema['node1'].default, 'new-default')
        self.assertEqual(group.schema['node2'].default, 50)
Beispiel #3
0
    def test_settings_load_rawdata_and_change_defaults(self):
        group = self._create_default_group()

        # change defaults
        get_settings()._load({'group.node2': 30}, setdefaults=True)

        # new values
        self.assertEqual(group['node1'], 'default1')
        self.assertEqual(group['node2'], 30)

        self.assertEqual(group.schema['node1'].default, 'default1')
        self.assertEqual(group.schema['node2'].default, 30)
Beispiel #4
0
    def run(self):
        # print defaults
        if self.options.printcfg:
            data = get_settings().export(True)

            parser = ConfigParser.ConfigParser(dict_type=OrderedDict)
            items = data.items()
            items.sort()
            for key, val in items:
                parser.set(ConfigParser.DEFAULTSECT, key, val)

            fp = StringIO.StringIO()
            try:
                parser.write(fp)
            finally:
                pass

            print fp.getvalue()
            return

        if self.options.all:
            section = ''
        else:
            section = self.options.section

        # print description
        groups = get_settings().items()
        groups.sort()

        for name, group in groups:
            if section and name != section:
                continue

            print ''
            title = group.title or name

            print grpTitleWrap.fill(title)
            if group.description:
                print grpDescriptionWrap.fill(group.description)

            print
            for node in group.schema:
                default = '<required>' if node.required else node.default
                print nameWrap.fill(
                    '%s.%s: %s (%s: %s)' % (
                        name, node.name, node.title,
                        node.typ.__class__.__name__, default))

                print nameTitleWrap.fill(node.description)
                print
Beispiel #5
0
    def test_settings_initialize_events(self):
        self._init_ptah()

        sm = self.config.registry

        events = []

        def h1(ev):
            events.append(ev)

        def h2(ev):
            events.append(ev)

        sm.registerHandler(h1, (ptah.config.SettingsInitializing,))
        sm.registerHandler(h2, (ptah.config.SettingsInitialized,))

        settings = get_settings()

        ptah.config.initialize_settings({}, self.config)

        self.assertTrue(isinstance(events[0], ptah.config.SettingsInitializing))
        self.assertTrue(isinstance(events[1], ptah.config.SettingsInitialized))

        self.assertTrue(events[0].config is self.config)
        self.assertTrue(events[1].config is self.config)
Beispiel #6
0
    def test_settings_export(self):
        node1 = ptah.config.SchemaNode(
                colander.Str(),
                name = 'node1',
                default = 'test')

        node2 = ptah.config.SchemaNode(
                colander.Str(),
                name = 'node2',
                default = 'test')

        group = ptah.config.register_settings('group4', node1, node2)

        self._init_ptah()

        settings = get_settings()

        # changed settings
        self.assertEqual(settings.export(), {})

        # default settings
        self.assertEqual(settings.export(default=True),
                         {'group4.node1': 'test', 'group4.node2': 'test'})

        # changed settings
        group['node2'] = 'changed'
        data = dict(settings.export())
        self.assertEqual(data, {'group4.node2': 'changed'})
Beispiel #7
0
    def update(self):
        groups = get_settings().items()
        groups.sort()

        data = []
        for name, group in groups:
            title = group.title or name
            description = group.description

            schema = []
            for node in group.schema:
                value = node.serialize(group[node.name])

                schema.append(
                    ({'name': '%s.%s'%(name, node.name),
                      'value': '%s: %s'%(node.typ.__class__.__name__, value),
                      'title': node.title,
                      'description': node.description,
                      'default': node.default}))

            data.append(
                ({'title': title,
                  'description': description,
                  'schema': schema}))

        return {'data': data}
Beispiel #8
0
    def test_settings_load_defaults_rawdata_with_errors_in_colander(self):
        node = ptah.config.SchemaNode(
            ptah.config.Sequence(), colander.SchemaNode(colander.Str()),
            name = 'node1',
            default = ())

        group = ptah.config.register_settings('group', node)
        self._init_ptah()

        self.assertRaises(
            KeyError,
            get_settings()._load,
            {'group.node1.0': '1',
             'group.node1.3': '1'}, setdefaults=True)
Beispiel #9
0
    def test_settings_load_defaults_rawdata_with_errors_in_values(self):
        group = self._create_default_group()

        get_settings()._load({'group.node2': 'vadfw234lue'}, setdefaults=True)
        self.assertEqual(dict(group),
                         {'node1': 'default1', 'node2': 10})
Beispiel #10
0
    def test_settings_load_rawdata_with_errors_in_rawdata(self):
        group = self._create_default_group()

        get_settings()._load({10: 'value'})
        self.assertEqual(dict(group), {'node1': 'default1', 'node2': 10})