diff --git a/overviewer_core/configParser.py b/overviewer_core/configParser.py index e15e034..a1686d3 100644 --- a/overviewer_core/configParser.py +++ b/overviewer_core/configParser.py @@ -224,7 +224,10 @@ class MultiWorldParser(object): glob = dict(render=dict(), custom_rendermodes=dict()) try: - execfile(self.settings_file, glob, glob) + execfile(self.settings_file, glob, glob) + # delete the builtins, we don't need it + del glob['__builtins__'] + except NameError, ex: import traceback traceback.print_exc() @@ -240,18 +243,25 @@ class MultiWorldParser(object): self.render = glob['render'] self.custom_rendermodes = glob['custom_rendermodes'] - #import pprint - #pprint.pprint(glob, indent=2) + + # anything that's not 'render' or 'custom_rendermode' is a default + del glob['render'] + del glob['custom_rendermodes'] + self.defaults = glob + + import pprint + pprint.pprint(glob, indent=2) def validate(self): for worldname in self.render: world = self.render[worldname] + world.update(self.defaults) for key in world: if key not in settingsDefinition.render: - print "Warning: %r is not a known setting" + print "Warning: %r is not a known setting" % key next definition = settingsDefinition.render[key] diff --git a/overviewer_core/settingsDefinition.py b/overviewer_core/settingsDefinition.py index 3b03eb7..871da67 100644 --- a/overviewer_core/settingsDefinition.py +++ b/overviewer_core/settingsDefinition.py @@ -15,8 +15,8 @@ from settingsValidators import * render = { - "path": dict(required=True, validator=validatePath), - "rendermodes": dict(required=False, validator=validateRenderMode), + "world_path": dict(required=True, validator=validatePath), + "rendermode": dict(required=False, validator=validateRenderMode), "north-direction": dict(required=False, validator=validateNorthDirection), "render-range": dict(required=False, validator=validateRenderRange), "force-render": dict(required=False, validator=bool), diff --git a/test/data/settings/settings_test_1.py b/test/data/settings/settings_test_1.py index a7f953b..9460de9 100644 --- a/test/data/settings/settings_test_1.py +++ b/test/data/settings/settings_test_1.py @@ -1,5 +1,11 @@ +world_path="test/data/settings/test_world" +rendermode = "normal" + render["world"] = { - "path": "test/data/settings/test_world", - "rendermodes": ["normal"], + "rendermode": "normal", "north-direction": ["upper-left"], } + +render["otherworld"] = { + "rendermode": "foo" +} diff --git a/test/data/settings/settings_test_rendermode.py b/test/data/settings/settings_test_rendermode.py index 253ae12..b7c6f27 100644 --- a/test/data/settings/settings_test_rendermode.py +++ b/test/data/settings/settings_test_rendermode.py @@ -1,5 +1,5 @@ render["world"] = { - "path": "test/data/settings/test_world", - "rendermodes": ["bad_rendermode"], + "world_path": "test/data/settings/test_world", + "rendermode": "bad_rendermode", "north-direction": ["upper-left"], }