def modify_balances(self, data, session, curs=None): balances_ids = data['ids'] currency_f = CurrencyFilter({}, {}, None) currencies = currency_f.filter_objs(curs) currencies_id_idx = build_index(currencies, 'id') balance_f = BalanceFilter(session, {'ids': balances_ids}, {}, None) balances = balance_f.filter_objs(curs) # Setting users ids for logging users_ids = [balance.user_id for balance in balances] data['users_ids'] = users_ids # Handling different currencies for different balances new_overdraft_limit = data.pop('new_overdraft_limit', None) def loader(): if new_overdraft_limit is not None: for b in balances: d = {'new_overdraft_limit': new_overdraft_limit} amount_fields = ['new_overdraft_limit'] currency = currencies_id_idx[b.currency_id] d = decimal_texts_to_cents(d, currency, amount_fields) b.overdraft_limit = d['new_overdraft_limit'] return balances self.update_objs(curs, data, loader) return response_ok()