Skip to content

Commit

Permalink
initial GUI work on importing CSV files.
Browse files Browse the repository at this point in the history
  • Loading branch information
djmuhlestein committed Jan 17, 2009
0 parents commit ce28c4b
Show file tree
Hide file tree
Showing 7 changed files with 310 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
*.bak
*.pyc
*.kpf
*.pjd
15 changes: 15 additions & 0 deletions csv2ofx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env python

try:
# attempt to use the installed python package
import csv2ofx
except:
# attempt to run the package from the source directory
import sys
sys.path.insert (0,'src')
import csv2ofx


if __name__ == '__main__':
a=csv2ofx.csv2ofx()
a.MainLoop()
9 changes: 9 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from distutils.core import setup

setup(
name='csv2ofx',
version='0.1',
packages=['csv2ofx'],
package_dir={'csv2ofx':'src/csv2ofx'}
)

142 changes: 142 additions & 0 deletions src/csv2ofx/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@

import sys, os
import csv

import wx
from wx import xrc
import wx.grid as grd


class SimpleCSVGrid(grd.PyGridTableBase):
"""
A very basic instance that allows the csv contents to be used
in a wx.Grid
"""
def __init__(self,csv_path):
grd.PyGridTableBase.__init__(self)
# delimiter, quote could come from config file perhaps
csv_reader = csv.reader(open(csv_path,'r'),delimiter=',',quotechar='"')
self.grid_contents = [row for row in csv_reader]

# the 1st row is the column headers
self.grid_cols = len(self.grid_contents[0])
self.grid_rows = len(self.grid_contents)

def GetNumberRows(self):
return self.grid_rows-1

def GetNumberCols(self):
return self.grid_cols

def IsEmptyCell(self,row,col):
return len(self.grid_contents[row+1][col]) == 0

def GetValue(self,row,col):
return self.grid_contents[row+1][col]

def GetColLabelValue(self,col):
return self.grid_contents[0][col]



class csv2ofx(wx.App):
"""
class csv2ofx
Extends wx.App
Provides a data table to preview csv input.
"""
def __init__(self):
wx.App.__init__(self,redirect=False)

def OnInit(self):
"""
Initializes and shows frame from csv2ofx.xrc
"""

# load the xml resource
script_dir = os.path.dirname ( __file__ )
self.res = xrc.XmlResource ( "%s/csv2ofx.xrc" % script_dir )

# load the frame from the resource
self.frame = self.res.LoadFrame ( None, "ID_CSV2OFX")

# associate the MenuBar
self.frame.SetMenuBar (
self.res.LoadMenuBar("ID_MENUBAR")
)

# handle events
self.Bind ( wx.EVT_MENU, self.OnClose, id=xrc.XRCID("ID_MENU_CLOSE"))
self.Bind ( wx.EVT_BUTTON, self.OnClose, id=xrc.XRCID("ID_BTN_CLOSE"))
self.Bind ( wx.EVT_MENU, self.OnImport, id=xrc.XRCID("ID_MENU_IMPORT"))
self.Bind ( wx.EVT_BUTTON, self.OnImport, id=xrc.XRCID("ID_BTN_IMPORT"))
self.Bind ( wx.EVT_MENU, self.OnExport, id=xrc.XRCID("ID_MENU_EXPORT"))
self.Bind ( wx.EVT_BUTTON, self.OnExport, id=xrc.XRCID("ID_BTN_EXPORT"))

# the grid
#self.grid=grd.Grid(self.frame)
#self.grid.EnableEditing(False)
#self.res.AttachUnknownControl ( "ID_GRID", self.grid )
self.grid = xrc.XRCCTRL(self.frame,"ID_GRID")

# show the frame
self.SetTopWindow(self.frame)
self.frame.Show()
return True

def OnClose(self,evt):
"""
Close the application.
"""
self.frame.Close()

def OnImport(self,evt):
"""
Import a csv file.
"""

# create an open file dialog
dlg = wx.FileDialog (
self.frame,
message="Open CSV File",
wildcard="CSV Files (*.csv)|*.csv|All Files (*.*)|*.*",
style=wx.OPEN|wx.CHANGE_DIR,
)
if dlg.ShowModal() == wx.ID_OK:
path=dlg.GetPath()
self._open_file(path)
dlg.Destroy()


def _open_file(self,path):
"""
Opens a csv file and loads it's contents into the data table.
path: path to the csv file.
"""

print "Open File %s" % path

self.grid_table = SimpleCSVGrid(path)
self.grid.SetTable(self.grid_table)

def OnExport(self,evt):
if not hasattr(self,'grid_table'):
wx.MessageDialog(
self.frame,
"Use import to load a csv file.",
"No CSV File loaded.",
wx.OK|wx.ICON_ERROR
).ShowModal()
else:
print "Export"








63 changes: 63 additions & 0 deletions src/csv2ofx/csv2ofx.xrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<resource version="2.3.0.1" xmlns="http://www.wxwidgets.org/wxxrc">
<object class="wxFrame" name="ID_CSV2OFX">
<style>wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX</style>
<size>400,300</size>
<title>csv2ofx</title>
<object class="wxBoxSizer">
<orient>wxVERTICAL</orient>
<object class="sizeritem">
<flag>wxGROW|wxALL</flag>
<border>5</border>
<option>1</option>
<object class="wxGrid" name="ID_GRID">
<size>200,150</size>
</object>
</object>
<object class="sizeritem">
<flag>wxALIGN_RIGHT|wxALL</flag>
<border>5</border>
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
<border>5</border>
<object class="wxButton" name="ID_BTN_IMPORT">
<label>Import</label>
</object>
</object>
<object class="sizeritem">
<flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
<border>5</border>
<object class="wxButton" name="ID_BTN_EXPORT">
<label>Export</label>
</object>
</object>
<object class="sizeritem">
<flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
<border>5</border>
<object class="wxButton" name="ID_BTN_CLOSE">
<label>Close</label>
</object>
</object>
</object>
</object>
</object>
</object>
<object class="wxMenuBar" name="ID_MENUBAR">
<object class="wxMenu">
<label>File</label>
<object class="wxMenuItem" name="ID_MENU_IMPORT">
<label>Import</label>
</object>
<object class="wxMenuItem" name="ID_MENU_EXPORT">
<label>Export</label>
</object>
<object class="separator">
</object>
<object class="wxMenuItem" name="ID_MENU_CLOSE">
<label>Close</label>
</object>
</object>
</object>
</resource>
59 changes: 59 additions & 0 deletions test/test.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
"Status","Date","Original Description","Split Type","Category","Currency","Amount","User Description","Memo","Classification","Account Name","Transaction Id"
"posted",01/15/09,"dorothy reynolds",,"Acme Corporation - SI Consulting","USD",99,,,"Business","PayPal - PayPal Balance ",48908122
"posted",01/14/09,"ROTO-ROOTER SVRCS10046 TAMPA FL",,"Riverside Property Management - Contracting or Repair ","USD",-1700,," Roto Rooter - Donnie 954-609-9125 for Riverside Property sewer line replacement (emergency)","Business","Discover Card - Discover",48908123
"posted",01/14/09,"IHERB.COM 8663281171 CA",,"Cost Of Goods Sold - Materials Other","USD",-125.88,,"supplements","Business","Advanta Business Card - 7603",48908124
"posted",01/14/09,"BANYAN TRADING 505-8570909 NM",,"Cost Of Goods Sold - Materials Other","USD",-138.6,,,"Personal","Capital One - Sport/Health Card",48908125
"posted",01/13/09,"MEMBERSHIP",,"MyPersonal - Service Charges Fees","USD",39,,,"Personal","Barclaycard (US) - AirTran",48908126
"posted",01/13/09,"IHERB.COM",,"Cost Of Goods Sold - Materials Other","USD",-125.88,,,"Business","Advanta Business Card - 7603",48908127
"posted",01/13/09,"Holly Meyers",,"Acme Corporation - SI Consulting","USD",99,,,"Business","PayPal - PayPal Balance ",48908128
"posted",01/12/09,"BANK OF AMERICA ONLINE PMT CO",,"Credit Card Payments","USD",-124.11,,,"Business","First Bank - CHECKING Acme Corporation",48908129
"posted",01/07/09,"CHECK CLEARED",,"Riverside Property Management - Maintenance","USD",-280,"Roger Whitcher","labor","Business","First Bank - CHECKING Riverside",48908130
"posted",01/07/09,"UCS - AUTOPAY PAYMENT CO ",,"Credit Card Payments","USD",-18.61,,,"Business","First Bank - CHECKING Acme Corporation",48908131
"posted",01/06/09,"AUTOPAY 4423RAUTOPAY AUTO-PMT",,"Credit Card Payments","USD",18.61,,,"Personal","Citibank Credit Cards - AT&T Universal Card",48908132
"posted",01/05/09,"HYPERFLITE SKYHOUNDZ ROSWELL GA",,"MyPersonal Pet Care - Toys Frisbees","USD",-122.45,,,"Business","Discover Card - Discover",48908133
"posted",01/05/09,"Jerrold Johnson",,"Acme Corporation - SI Consulting","USD",198,,"Vivian SI Consulting","Business","PayPal - PayPal Balance ",48908134
"posted",01/05/09,"CHECK CLEARED",,"Riverside Property Management - Contracting or Repair ","USD",-500,"John Andrews","Riverside roof","Business","First Bank - CHECKING Riverside",48908135
"posted",01/03/09,"RENT A CODER 813-9089029 FL",,"Consulting Expenses - Technology Outsourcing","USD",-50,,"Convert DavesBlog & JohnsBlog from Subtext to Drupal","Business","Discover Card - Discover",48908136
"posted",01/03/09,"Skype",,"Telephone Services - Skype","USD",-2.95,,,"Business","PayPal - PayPal Balance ",48908137
"posted",01/02/09,"LINODE.COM 0171 ABSECON",,"Online Services","USD",-19.95,,,"Business","American Express Cards - Rewards Card",48908138
"posted",01/02/09,"CREDIT FOR EMIGRANTDIRECT TRANSFER CO",,"Transfers","USD",38.15,,,"Personal","First Bank - CHECKING DavidSmith Personal",48908139
"posted",01/02/09,"UCS-CLICK TO PAY PAYMENT CO ",,"Credit Card Payments","USD",-51.36,,,"Business","First Bank - CHECKING Acme Corporation",48908140
"posted",12/31/08,"CLICK-TO-PAY PAYMENT, THANK YOU",,"Credit Card Payments","USD",51.36,,,"Personal","Citibank Credit Cards - AT&T Universal Card",48908141
"posted",12/31/08,"COMPUTER PAYMENT RECEIVED - THA",,"Credit Card Payments","USD",242.7,,,"Business","American Express Cards - Rewards Card",48908142
"posted",12/31/08,"BARNES&NOBLE*BOOKQUEST 866-257-7723 NJ 529446001034",,"Research and Development - SI Consulting","USD",-7.98,"BN.com (The Web That Has No Weaver)","The Web That Has No Weaver","Business","Discover Card - Discover",48908143
"posted",12/31/08,"BARNES&NOBLE*BOOKQUEST 866-257-7723 NJ 529446001034",,"Research and Development - SI Consulting","USD",-5.88,"BN.com (Vital Energy : The 7 Keys to Invigorate Body, Mind, and Soul)","Vital Energy : The 7 Keys to Invigorate Body, Mind, and Soul","Business","Discover Card - Discover",48908144
"posted",12/31/08,"BARNES&NOBLE*BOOKQUEST 866-257-7723 NJ 529446001034",,"Research and Development - SI Consulting","USD",-6.9,,"Voices of Qi-an Introductory Guide to Traditional Chinese Medicine","Business","Discover Card - Discover",48908145
"posted",12/31/08,"BARNES&NOBLE*COM 800-843-2665 NJ 529446001034",,"Research and Development - SI Consulting","USD",-27.81,"Barnes & Noble (Born on a Blue Day: Inside the Extraordinary Mind of an Autistic Savant; Embracing the Wide Sky: A Tour Across the Horizons of the Mind)","2 Daniel Tammet books","Business","Discover Card - Discover",48908146
"posted",12/29/08,"GODADDY.COM SCOTTSDALE",,"Online Services","USD",-69.21,,"domain name renewals","Business","American Express Cards - Rewards Card",48908147
"posted",12/27/08,"HEALTHYWAY CAFE (ST.TAMPA",,"Meals and Entertainment","USD",-39.17,,,"Business","American Express Cards - Rewards Card",48908148
"posted",12/27/08,"YOGABERRY TAMPA",,"Meals and Entertainment","USD",-12.73,,,"Business","American Express Cards - Rewards Card",48908149
"posted",12/23/08,"IOD INTEREST PAID",,"MyPersonal - Interest Income","USD",0.35,,,"Personal","First Bank - MONEYMRKT Old DavidSmith Personal",48908150
"posted",12/23/08,"IOD INTEREST PAID",,"MyPersonal - Interest Income","USD",0.05,,,"Personal","First Bank - CHECKING DavidSmith Personal",48908151
"posted",12/23/08,"SERVICE CHARGE",,"MyPersonal - Service Charges Fees","USD",-15,,,"Personal","First Bank - CHECKING DavidSmith Personal",48908152
"posted",12/23/08,"DEPOSIT",,"Riverside Property Management - Jax Housing Authority","USD",314,,,"Business","First Bank - CHECKING Riverside",48908153
"posted",12/23/08,"CHECK CLEARED",,"Riverside Property Management - Maintenance","USD",-475,,"tree removal for garden","Business","First Bank - CHECKING Riverside",48908154
"posted",12/23/08,"DEPOSIT",,"Riverside Property Management - Jax Housing Authority","USD",314,,,"Business","First Bank - CHECKING Riverside",48908155
"posted",12/23/08,"DEPOSIT",,"Acme Corporation - SI Consulting","USD",99,,,"Business","First Bank - CHECKING Acme Corporation",48908156
"posted",12/21/08,"LINODE.COM 0138 ABSECON",,"Online Services","USD",-7.73,,,"Business","American Express Cards - Rewards Card",48908157
"posted",12/20/08,"USPS.COM CLICK100611WASHINGTON",,"Office Expenses - Postage And Delivery","USD",-9.35,,"Henry Cohn emWavePC","Business","American Express Cards - Rewards Card",48908158
"posted",12/19/08,"RENT A CODER TAMPA FL",,"Consulting Expenses - Technology Outsourcing","USD",-115,,"convert FitEyes to Drupal from CommunityServer","Business","Bank of America (All except WA & ID) - Credit Card - Bank of America 9297 BofA Amex",48908159
"posted",12/10/08,"GODADDY.COM SCOTTSDALE",,"Online Services","USD",-107.06,,,"Business","American Express Cards - Rewards Card",48908160
"posted",12/09/08,"AMAZON.COM AMZN.COM/BILLWA",,"MyPersonal Entertainment","USD",-19.95,,,"Business","Bank of America (All except WA & ID) - Credit Card - Bank of America 9297 BofA Amex",48908161
"posted",12/07/08,"DILLARDS DEPT STORESTAMPA",,"MyPersonal - Clothing","USD",-73.02,,,"Business","American Express Cards - Rewards Card",48908162
"posted",12/07/08,"REGIS TAMPA",,"MyPersonal - Personal Care","USD",-26,,"haircut","Business","American Express Cards - Rewards Card",48908163
"posted",12/05/08,"AMAZON.COM AMZN.COM/BI",,"Professional Development - Books","USD",-91,,,"Business","American Express Cards - Rewards Plus Gold Card",48908164
"Cleared",12/05/08," Mike Hogan, Tax Collector
Holly Oaks Property Taxes
Withdrawal Draft #008048
",,"MyPersonal - Property Taxes","USD",-4322.83,,,"Personal","Custom Bank - xxxxFederal Checking 02 JaxFCU Checking",48908165
"Cleared",12/01/08," Deposit Dividend %% APY Earned 0.24% 11/01/08 to 11/30/08
",,"MyPersonal - Interest Income","USD",2.55,,,"Personal","Custom Bank - xxxxFederal Checking 02 JaxFCU Checking",48908166
"Cleared",12/01/08," Deposit Dividend %% APY Earned 2.25% 11/01/08 to 11/30/08%% APYE Avg Daily Bal 663.98",,"MyPersonal - Interest Income","USD",4.69,,,"Personal","Custom Bank - xxxxFederal Money Market FCU MoneyMrkt",48908167
"posted",11/28/08,"SPIRITUAL LEGACIES 0ASHLAND",,"Professional Development - Subscriptions","USD",-80,,"disputed membership","Business","American Express Cards - Rewards Plus Gold Card",48908168
"posted",11/28/08,"USPS 1144139557 TAMPA",,"Office Expenses - Postage And Delivery","USD",-1.26,,,"Business","American Express Cards - Rewards Card",48908169
"posted",11/28/08,"SPIRITUAL LEGACIES 0138",,"Professional Development - Subscriptions","USD",80,,,"Business","American Express Cards - Rewards Card",48908170
"posted",11/28/08,"MONEY MARKET INTEREST (MMDA1)",,"MyPersonal - Tax Exempt Interest Income","USD",0,,,"Personal","TD Ameritrade - W DAVID SMITH ROTH IRA TD AMERITRADE INC CUSTODIAN",48908171
"posted",11/28/08,"MONEY MARKET INTEREST (MMDA1)",,"MyPersonal - Other Income","USD",0,,,"Personal","TD Ameritrade - DAVID SMITH",48908172
"posted",10/17/08,"PAYMENT TO EVERBANK NBG-FUNDS XFER",,"Transfers","USD",-50,,,"Personal","HSBC Bank USA - ONLINE SAVINGS",48908173
"Cleared",10/17/08," Withdrawal EVERBANK NBG",,"Transfers","USD",-50,,,"Personal","Custom Bank - xxxxFederal Money Market FCU MoneyMrkt",48908174
"Cleared",10/16/08," Transfer from other FCU money market account (changed from Tiered)",,"Transfers","USD",123.32,,,"Personal","Custom Bank - xxxxFederal Money Market FCU MoneyMrkt",48908175
18 changes: 18 additions & 0 deletions test/test2.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
"Date","Description","Comments","Check Number","Amount","Balance"
10/02/08,"Deposit Home Banking",,,$130.00,$543.41
10/03/08,"Deposit ACH EVERBANK NBG",,,$0.24,$543.65
10/03/08,"Deposit ACH EVERBANK NBG",,,$0.89,$544.54
10/03/08,"Withdrawal ACH EVERBANK NBG",,,-$0.24,$544.30
10/03/08,"Withdrawal ACH EVERBANK NBG",,,-$0.89,$543.41
10/03/08,"Withdrawal Draft #008045",,8045,-$130.00,$413.41
11/01/08,"Deposit Dividend %% APY Earned 0.12% 10/01/08 to 10/31/08",,,$0.09,$413.50
11/08/08,"Deposit From BAZUERO 0000035193 Share 02",,,$200.00,$613.50
11/17/08,"Deposit Home Banking",,,$150.00,$763.50
12/01/08,"Deposit Dividend %% APY Earned 0.24% 11/01/08 to 11/30/08",,,$0.05,$763.55
12/05/08,"Withdrawal Draft #008048",,8048,-$832.83,-$69.28
12/11/08,"Overdrawn 008046",,,-$30.00,-$99.28
12/11/08,"Deposit REV NSF FEE CHECK #8046",,,$30.00,-$69.28
12/11/08,"Deposit",,,$280.00,$210.72
12/11/08,"Withdrawal OD TRANSFER FEE",,,-$3.00,$207.72
12/11/08,"Withdrawal Draft #008046",,8046,-$250.00,-$42.28
01/01/09,"Deposit Dividend %% APY Earned 0.25% 12/01/08 to 12/31/08",,,$0.15,-$42.13

0 comments on commit ce28c4b

Please sign in to comment.