def add_external_trade(self, data): timestamp, message = check_otctrade_data_valid(data) if not timestamp: return False, message rate = float(data['otc_rate']) amount = float(data['otc_amount']) cost = rate * amount pair = data['otc_pair'] external_trades = get_external_trades(self.data_directory) external_trades.append({ 'timestamp': timestamp, 'pair': pair, 'type': data['otc_type'], 'rate': rate, 'cost': cost, # for now cost/fee currency is always second. # TODO: Make it configurable 'cost_currency': get_pair_position(pair, 'second'), 'fee_currency': get_pair_position(pair, 'second'), 'fee': data['otc_fee'], 'amount': amount, 'location': 'external', 'link': data['otc_link'], 'notes': data['otc_notes'], }) with open(os.path.join(self.data_directory, EXTERNAL_TRADES_FILE), 'w') as f: f.write(rlk_jsondumps(external_trades)) return True, ''
def delete_external_trade(self, data): external_trades = get_external_trades(self.data_directory) # TODO: When using sql just use primary key as id found_idx = -1 for idx, trade in enumerate(external_trades): if trade['timestamp'] == data['timestamp']: found_idx = idx break if found_idx == -1: return False, 'Could not find the requested trade for deletion' del external_trades[found_idx] with open(os.path.join(self.data_directory, EXTERNAL_TRADES_FILE), 'w') as f: f.write(rlk_jsondumps(external_trades)) return True, ''
def edit_external_trade(self, data): timestamp, message = check_otctrade_data_valid(data) if not timestamp: return False, message rate = float(data['otc_rate']) amount = float(data['otc_amount']) cost = rate * amount pair = data['otc_pair'] external_trades = get_external_trades(self.data_directory) # TODO: When we switch to sql, editing should be done with the primary key found = False for idx, trade in enumerate(external_trades): if timestamp == trade['timestamp']: external_trades[idx] = { 'timestamp': timestamp, 'pair': pair, 'type': data['otc_type'], 'rate': rate, 'cost': cost, # for now cost/fee currency is always second. # TODO: Make it configurable 'cost_currency': get_pair_position(pair, 'second'), 'fee_currency': get_pair_position(pair, 'second'), 'fee': data['otc_fee'], 'amount': amount, 'location': 'external', 'link': data['otc_link'], 'notes': data['otc_notes'], } found = True break if not found: return False, 'Could not find the requested trade for editing' with open(os.path.join(self.data_directory, EXTERNAL_TRADES_FILE), 'w') as f: f.write(rlk_jsondumps(external_trades)) return True, ''
def set_settings(self, settings, accountant): self.settings = settings accountant.set_main_currency(settings['main_currency']) with open(os.path.join(self.data_directory, 'settings.json'), 'w') as f: f.write(rlk_jsondumps(self.settings))
def set_ui_floating_precision(self, val): self.settings['ui_floating_precision'] = val with open(os.path.join(self.data_directory, 'settings.json'), 'w') as f: f.write(rlk_jsondumps(self.settings))