Merge branch 'csv'
This commit is contained in:
commit
ebfe6346e7
|
@ -27,7 +27,10 @@ import wallet
|
||||||
import webbrowser
|
import webbrowser
|
||||||
import history_widget
|
import history_widget
|
||||||
import util
|
import util
|
||||||
|
import csv
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from wallet import format_satoshis
|
||||||
import gui_qt
|
import gui_qt
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
|
@ -243,6 +246,9 @@ class MiniWindow(QDialog):
|
||||||
backup_wallet = extra_menu.addAction( _("&Create wallet backup"))
|
backup_wallet = extra_menu.addAction( _("&Create wallet backup"))
|
||||||
backup_wallet.triggered.connect(self.backup_wallet)
|
backup_wallet.triggered.connect(self.backup_wallet)
|
||||||
|
|
||||||
|
export_csv = extra_menu.addAction( _("&Export transactions to CSV") )
|
||||||
|
export_csv.triggered.connect(self.actuator.csv_transaction)
|
||||||
|
|
||||||
expert_gui = view_menu.addAction(_("&Classic GUI"))
|
expert_gui = view_menu.addAction(_("&Classic GUI"))
|
||||||
expert_gui.triggered.connect(expand_callback)
|
expert_gui.triggered.connect(expand_callback)
|
||||||
themes_menu = view_menu.addMenu(_("&Themes"))
|
themes_menu = view_menu.addMenu(_("&Themes"))
|
||||||
|
@ -661,6 +667,48 @@ class MiniActuator:
|
||||||
w.exec_()
|
w.exec_()
|
||||||
w.destroy()
|
w.destroy()
|
||||||
|
|
||||||
|
def csv_transaction(self):
|
||||||
|
try:
|
||||||
|
fileName = QFileDialog.getSaveFileName(QWidget(), 'Select file to export your wallet transactions to', os.path.expanduser('~/'), "*.csv")
|
||||||
|
if fileName:
|
||||||
|
with open(fileName, "w+") as csvfile:
|
||||||
|
transaction = csv.writer(csvfile)
|
||||||
|
transaction.writerow(["transaction_hash","label", "confirmations", "value", "fee", "balance", "timestamp"])
|
||||||
|
for item in self.wallet.get_tx_history():
|
||||||
|
tx_hash, confirmations, is_mine, value, fee, balance, timestamp = item
|
||||||
|
if confirmations:
|
||||||
|
if timestamp is not None:
|
||||||
|
try:
|
||||||
|
time_string = datetime.datetime.fromtimestamp(timestamp).isoformat(' ')[:-3]
|
||||||
|
except [RuntimeError, TypeError, NameError] as reason:
|
||||||
|
time_string = "unknown"
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
time_string = "unknown"
|
||||||
|
else:
|
||||||
|
time_string = "pending"
|
||||||
|
|
||||||
|
if value is not None:
|
||||||
|
value_string = format_satoshis(value, True, self.wallet.num_zeros)
|
||||||
|
else:
|
||||||
|
value_string = '--'
|
||||||
|
|
||||||
|
if fee is not None:
|
||||||
|
fee_string = format_satoshis(fee, True, self.wallet.num_zeros)
|
||||||
|
else:
|
||||||
|
fee_string = '0'
|
||||||
|
|
||||||
|
if tx_hash:
|
||||||
|
label, is_default_label = self.wallet.get_label(tx_hash)
|
||||||
|
else:
|
||||||
|
label = ""
|
||||||
|
|
||||||
|
balance_string = format_satoshis(balance, False, self.wallet.num_zeros)
|
||||||
|
transaction.writerow([tx_hash, label, confirmations, value_string, fee_string, balance_string, time_string])
|
||||||
|
QMessageBox.information(None,"CSV Export created", "Your CSV export has been succesfully created.")
|
||||||
|
except (IOError, os.error), reason:
|
||||||
|
QMessageBox.critical(None,"Unable to create csv", "Electrum was unable to produce a transaction export.\n" + str(reason))
|
||||||
|
|
||||||
def send(self, address, amount, parent_window):
|
def send(self, address, amount, parent_window):
|
||||||
"""Send bitcoins to the target address."""
|
"""Send bitcoins to the target address."""
|
||||||
dest_address = self.fetch_destination(address)
|
dest_address = self.fetch_destination(address)
|
||||||
|
|
Loading…
Reference in New Issue