r22166 - gnucash/trunk/src/optional/python-bindings/example_scripts - Bug #674276 - fixes and enhancements to example test_imbalance_transaction.py

Geert Janssens gjanssens at code.gnucash.org
Sat Apr 28 09:37:18 EDT 2012


Author: gjanssens
Date: 2012-04-28 09:37:17 -0400 (Sat, 28 Apr 2012)
New Revision: 22166
Trac: http://svn.gnucash.org/trac/changeset/22166

Modified:
   gnucash/trunk/src/optional/python-bindings/example_scripts/test_imbalance_transaction.py
Log:
Bug #674276 - fixes and enhancements to example test_imbalance_transaction.py
a) added usage information
b) put most everything into exception handling to prevent lock linger when a
problem occurs
Patch by Jamie Campbell

Modified: gnucash/trunk/src/optional/python-bindings/example_scripts/test_imbalance_transaction.py
===================================================================
--- gnucash/trunk/src/optional/python-bindings/example_scripts/test_imbalance_transaction.py	2012-04-28 13:37:07 UTC (rev 22165)
+++ gnucash/trunk/src/optional/python-bindings/example_scripts/test_imbalance_transaction.py	2012-04-28 13:37:17 UTC (rev 22166)
@@ -27,7 +27,7 @@
 #   @author Mark Jenkins, ParIT Worker Co-operative <mark at parit.ca>
 #   @ingroup python_bindings_examples
 
-from sys import argv
+from sys import argv, exit
 
 from gnucash import Session, Transaction, Split, Account, GncNumeric, \
     GncCommodity
@@ -40,50 +40,64 @@
 #
 # You should try it out with a gnucash file with tranding accounts enabled
 # and trading accounts disabled
+
+if len(argv) < 2:    
+    print 'not enough parameters'
+    print 'usage: test_imbalance_transaction.py {book_url}'
+    print 'examples:'
+    print "gnucash-env python test_imbalance_transaction.py '/home/username/test.gnucash'"
+    exit()
+
 session = Session(argv[1])
-book = session.book
 
-root = book.get_root_account()
-root.get_instance()
-commod_tab = session.book.get_table()
-CAD = commod_tab.lookup("ISO4217","CAD")
-USD = commod_tab.lookup("ISO4217","USD")
-account = Account(book)
-account2 = Account(book)
-root.append_child(account)
-root.append_child(account2)
-account.SetCommodity(CAD)
-account.SetName("blahblah")
-account.SetType(3)
-account2.SetCommodity(USD)
-account2.SetName("blahblahsdfs ")
-account2.SetType(3)
+try:
+    book = session.book
 
-a = Transaction(book)
-a.BeginEdit()
+    root = book.get_root_account()
+    root.get_instance()
+    commod_tab = session.book.get_table()
+    CAD = commod_tab.lookup("ISO4217","CAD")
+    USD = commod_tab.lookup("ISO4217","USD")
+    account = Account(book)
+    account2 = Account(book)
+    root.append_child(account)
+    root.append_child(account2)
+    account.SetCommodity(CAD)
+    account.SetName("blahblah")
+    account.SetType(3)
+    account2.SetCommodity(USD)
+    account2.SetName("blahblahsdfs ")
+    account2.SetType(3)
 
-s = Split(book)
-s.SetParent(a)
-s2 = Split(book)
-s2.SetParent(a)
+    a = Transaction(book)
+    a.BeginEdit()
 
-a.SetCurrency(CAD)
-s.SetAccount(account)
-s.SetValue(GncNumeric(2))
-s.SetAmount(GncNumeric(2))
+    s = Split(book)
+    s.SetParent(a)
+    s2 = Split(book)
+    s2.SetParent(a)
 
-s2.SetAccount(account2)
-s2.SetValue(GncNumeric(4))
-s2.SetAmount(GncNumeric(4))
-print 'overall imbalance', a.GetImbalanceValue().to_string()
+    a.SetCurrency(CAD)
+    s.SetAccount(account)
+    s.SetValue(GncNumeric(2))
+    s.SetAmount(GncNumeric(2))
 
-print 'per-currency imbalances'
-imbalance_list = a.GetImbalance()
-for (commod, value) in imbalance_list:
-    print value.to_string(), commod.get_mnemonic()
+    s2.SetAccount(account2)
+    s2.SetValue(GncNumeric(4))
+    s2.SetAmount(GncNumeric(4))
+    print 'overall imbalance', a.GetImbalanceValue().to_string()
 
-a.CommitEdit()
+    print 'per-currency imbalances'
+    imbalance_list = a.GetImbalance()
+    for (commod, value) in imbalance_list:
+        print value.to_string(), commod.get_mnemonic()
 
+    a.CommitEdit()
 
-session.end()
-session.destroy()
+
+    session.end()
+    session.destroy()
+except:
+    if not session == None:
+        session.end()
+    raise



More information about the gnucash-changes mailing list