diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2015-03-06 11:15:13 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2015-05-06 16:06:35 +0200 |
commit | 3cbc3abd69b2b9f60f5e1dda0fec8eb3e6853656 (patch) | |
tree | 9408423a8a8036027df54d4c52d8ee8635fb3d3c /ishtar_common/data_importer.py | |
parent | 906843389ca8e090da79c289affb4ac0574ab47b (diff) | |
download | Ishtar-3cbc3abd69b2b9f60f5e1dda0fec8eb3e6853656.tar.bz2 Ishtar-3cbc3abd69b2b9f60f5e1dda0fec8eb3e6853656.zip |
Data importation: add an option to select the default choice (for testing)
Diffstat (limited to 'ishtar_common/data_importer.py')
-rw-r--r-- | ishtar_common/data_importer.py | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index 09c511a25..b70e76ffc 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -63,14 +63,15 @@ class ImportFormater(object): def report_error(self, *args): return - def init(self, vals, output=None): + def init(self, vals, output=None, choose_default=False): try: lst = iter(self.formater) except TypeError: lst = [self.formater] for formater in lst: if formater: - formater.check(vals, output, self.comment) + formater.check(vals, output, self.comment, + choose_default=choose_default) def post_process(self, obj, context, value, owner=None): raise NotImplemented() @@ -92,7 +93,7 @@ class Formater(object): def format(self, value): return value - def check(self, values, output=None, comment=''): + def check(self, values, output=None, comment='', choose_default=False): return class ChoiceChecker(object): @@ -245,8 +246,8 @@ class StrChoiceFormater(Formater, ChoiceChecker): msgstr += unicode(_(u"%d. None of the above - skip")) % idx + u"\n" return msgstr, idx - def check(self, values, output=None, comment=''): - if not output or output == 'silent': + def check(self, values, output=None, comment='', choose_default=False): + if (not output or output == 'silent') and not choose_default: return if self.many_split: new_values = [] @@ -259,11 +260,13 @@ class StrChoiceFormater(Formater, ChoiceChecker): value = self.prepare(value) if value in self.equiv_dict: continue - if output != 'cli': + if output != 'cli' and not choose_default: self.missings.add(value) continue msgstr, idx = self._get_choices(comment) res = None + if choose_default: + res = 1 while res not in range(1, idx+1): msg = msgstr % value sys.stdout.write(msg.encode('utf-8')) @@ -398,8 +401,8 @@ class StrToBoolean(Formater, ChoiceChecker): value = slugify(value) return value - def check(self, values, output=None, comment=''): - if not output or output == 'silent': + def check(self, values, output=None, comment='', choose_default=False): + if (not output or output == 'silent') and not choose_default: return msgstr = comment + u" - " msgstr += unicode(_(u"Choice for \"%s\" is not available. "\ @@ -411,10 +414,12 @@ class StrToBoolean(Formater, ChoiceChecker): value = self.prepare(value) if value in self.dct: continue - if not self.cli: + if output != 'cli' and not choose_default: self.missings.add(value) continue res = None + if choose_default: + res = 1 while res not in range(1, 4): msg = msgstr % value sys.stdout.write(msg.encode('utf-8')) @@ -519,7 +524,7 @@ class Importer(object): def post_processing(self, item, data): return item - def initialize(self, table, output='silent'): + def initialize(self, table, output='silent', choose_default=False): """ copy vals in columns and initialize formaters * output: @@ -541,11 +546,11 @@ class Importer(object): vals[idx_col].append(val) for idx, formater in enumerate(self.line_format): if formater: - formater.init(vals[idx], output) + formater.init(vals[idx], output, choose_default=choose_default) - def importation(self, table, initialize=True): + def importation(self, table, initialize=True, choose_default=False): if initialize: - self.initialize(table, self.output) + self.initialize(table, self.output, choose_default=choose_default) self._importation(table) @classmethod |