From dc73c987c8960bf4c7b846c7cebdefbcb5cdd67a Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Tue, 2 Jul 2013 16:42:37 +0100 Subject: [PATCH] update command for config v2 to v3 --- papers/commands/update_cmd.py | 23 +++++++++++++---------- papers/configs.py | 6 +++++- tests/test_config.py | 2 ++ 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/papers/commands/update_cmd.py b/papers/commands/update_cmd.py index bcf65ee..6c6eb91 100644 --- a/papers/commands/update_cmd.py +++ b/papers/commands/update_cmd.py @@ -3,6 +3,7 @@ import sys from .. import repo from .. import color from ..configs import config +from ..__init__ import __version__ def parser(subparsers): parser = subparsers.add_parser('update', help='update the repository to the lastest format') @@ -10,33 +11,36 @@ def parser(subparsers): def command(ui): - rp = repo.Repository(config()) - code_version = papers.__version__ - repo_version = config().version + code_version = __version__ + repo_version = int(config().version) if repo_version == code_version: - ui._print('You papers repository is up-to-date.') + ui.print_('You papers repository is up-to-date.') sys.exit(0) - elif repo_version <= code_version: - ui._print('Your repository was generated with an newer version of papers.\n' + elif repo_version > code_version: + ui.print_('Your repository was generated with an newer version of papers.\n' 'You should not use papers until you install the newest version.') sys.exit(0) else: msg = ("You should backup the paper directory {} before continuing." - "Continue ?").format(color.dye(rp.papersdir, color.filepath)) + "Continue ?").format(color.dye(config().papers_dir, color.filepath)) sure = ui.input_yn(question=msg, default='n') if not sure: sys.exit(0) if repo_version == 1: + rp = repo.Repository(config()) for p in rp.all_papers(): tags = set(p.metadata['tags']) tags = tags.union(p.metadata['labels']) p.metadata.pop('labels', []) rp.save_paper(p) repo_version = 2 + + if repo_version == 2: # update config + print 'bla' cfg_update = [('papers-directory', 'papers_dir'), ('open-cmd', 'open_cmd'), ('edit-cmd', 'edit_cmd'), @@ -45,13 +49,12 @@ def command(ui): ] for old, new in cfg_update: try: - config().__setattr__('papers', new, config()._cfg.get('papers', old)) + config()._cfg.set('papers', new, config()._cfg.get('papers', old)) config()._cfg.remove_option('papers', old) except Exception: pass config().save() repo_version = 3 - config().version = repo_version - config().save() \ No newline at end of file + config().save() diff --git a/papers/configs.py b/papers/configs.py index 776e5f5..5d66e19 100644 --- a/papers/configs.py +++ b/papers/configs.py @@ -40,9 +40,13 @@ def config(section = MAIN_SECTION): class Config(object): def __init__(self, **kwargs): - object.__setattr__(self, '_cfg', configparser.SafeConfigParser(DFT_CONFIG)) object.__setattr__(self, '_section', MAIN_SECTION) # active section + object.__setattr__(self, '_cfg', configparser.SafeConfigParser()) + self._cfg.add_section(self._section) + for name, value in DFT_CONFIG.items(): + self._cfg.set(self._section, name, str(value)) + for name, value in kwargs.items(): self.__setattr__(name, value) diff --git a/tests/test_config.py b/tests/test_config.py index e9705b9..1f7faa6 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -25,9 +25,11 @@ class TestConfig(unittest.TestCase): a.as_global() config().color = 'no' self.assertEqual(config().color, False) + self.assertEqual(config('papers').color, False) # booleans type for new variables are memorized, but not saved. config().bla = True self.assertEqual(config().bla, True) + self.assertEqual(config('papers').bla, True) with self.assertRaises(configparser.NoOptionError): config()._cfg.get(configs.MAIN_SECTION, '_section')