From 7e678c9d85b84ac7e903a4bdc1d08890fa5f1d18 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Tue, 2 Feb 2016 04:18:47 +0100 Subject: utils/console: Add helper class to handle forms The wtforms classes need some helper to work on the command line. --- accounts/utils/console.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/accounts/utils/console.py b/accounts/utils/console.py index 8af3fb3..fb55030 100644 --- a/accounts/utils/console.py +++ b/accounts/utils/console.py @@ -78,3 +78,42 @@ class TablePrinter(object): def _print_row(self, row): print(self.format_string % tuple(row)) + + +class ConsoleForm(object): + _ready = False + + def __init__(self, formcls, **kwargs): + self.form = formcls() + self._fill(kwargs) + self._ready = True + + def _fill(self, data): + for key, value in data.items(): + field = getattr(self.form, key, None) + if field is not None: + field.data = value + + def print_errors(self): + for field, errors in self.form.errors.items(): + if len(errors) > 1: + print('%s:' % field) + for error in errors: + print(' %s' % error) + else: + print('%s: %s' % (field, errors[0])) + + def __getattr__(self, name): + return getattr(self.form, name) + + def __setattr__(self, name, value): + if self._ready and name not in self.__dict__: + setattr(self.form, name, value) + else: + super(ConsoleForm, self).__setattr__(name, value) + + def __delattr__(self, name): + if self._ready and name not in self.__dict__: + delattr(self.form, name) + else: + super(ConsoleForm, self).__delattr__(name) -- cgit v1.2.3-1-g7c22