def write(cls, *args): actions = iter(args) args = [] for numbers, values in zip(actions, actions): values = values.copy() if values.get('type') == 'iban' and 'number' in values: values['number'] = iban.format(values['number']) values['number_compact'] = iban.compact(values['number']) args.extend((numbers, values)) super(BankAccountNumber, cls).write(*args) to_write = [] for number in sum(args[::2], []): if number.type == 'iban': formated_number = iban.format(number.number) compacted_number = iban.compact(number.number) if ((formated_number != number.number) or (compacted_number != number.number_compact)): to_write.extend(([number], { 'number': formated_number, 'number_compact': compacted_number, })) if to_write: cls.write(*to_write)
def create(cls, vlist): vlist = [v.copy() for v in vlist] for values in vlist: if values.get('type') == 'iban' and 'number' in values: values['number'] = iban.format(values['number']) values['number_compact'] = iban.compact(values['number']) return super(BankAccountNumber, cls).create(vlist)
def pre_validate(self): super(BankAccountNumber, self).pre_validate() ''' Check the Bank number depending of the country. ''' if self.type == 'iban' and self.number and HAS_BANKNUMBER: bban = iban.compact(self.number)[4:] if not getattr(banknumber, 'check_code_' + self.number[:2].lower())(bban): self.raise_user_error('invalid_bban', bban)
def compact_iban(self): return (iban.compact(self.number) if self.type == 'iban' else self.number)