r16406 - gnucash/branches/dogtail/src/test-dogtail - Fix more issues with new cutomer dialog, add new method to be able to submit batch of customers using GUI

Ahmed Sayed asayed at cvs.gnucash.org
Wed Aug 8 18:27:26 EDT 2007


Author: asayed
Date: 2007-08-08 18:27:22 -0400 (Wed, 08 Aug 2007)
New Revision: 16406
Trac: http://svn.gnucash.org/trac/changeset/16406

Modified:
   gnucash/branches/dogtail/src/test-dogtail/GnuCash.py
Log:
Fix more issues with new cutomer dialog, add new method to be able to submit batch of customers using GUI


Modified: gnucash/branches/dogtail/src/test-dogtail/GnuCash.py
===================================================================
--- gnucash/branches/dogtail/src/test-dogtail/GnuCash.py	2007-08-08 20:07:02 UTC (rev 16405)
+++ gnucash/branches/dogtail/src/test-dogtail/GnuCash.py	2007-08-08 22:27:22 UTC (rev 16406)
@@ -113,12 +113,19 @@
         self.menu("File").menu("New").child("New Accounts Page").click()
         account_page = self.tab("Accounts")
         return account_page
-    
-    def add_account (self, account_name, account_type=None, account_parent=None, smallest_fraction=None, account_code=None,   description=None, notes=None):
-        """ Add account this function able to add only two levels parent child account """
+
+    def add_account (self, account_name, account_type=None, \
+        account_parent=None, smallest_fraction=None, account_code=None,  \
+         description=None, notes=None):
+        """ Add account this function able to add only
+             two levels parent child account """
         if account_parent != None:
-            account_table = self.findChild(predicate.GenericPredicate(roleName='page tab', name='Accounts'))
-            parent_cell = account_table.findChild(predicate.GenericPredicate(roleName='table cell', name=account_parent))
+            account_table = \
+            self.findChild(\
+            predicate.GenericPredicate(roleName='page tab', name='Accounts'))
+            parent_cell = \
+            account_table.findChild(\
+            predicate.GenericPredicate(roleName='table cell', name=account_parent))
             parent_cell.rawClick()
 
         newAccount = NewAccount()
@@ -146,6 +153,7 @@
         reconcile = Reconcile()
         reconcile.invoke()
         return reconcile
+    
 
 class GnucashWindow(Window):
     """ A base for all Gnucash Dialogs dialogs """
@@ -196,11 +204,11 @@
         """" when calling dismiss the expected action is Cancel, Close and No """
         button_list = self.findChildren(predicate.GenericPredicate(roleName='push button'))
         for button in button_list:
-           accept_button = in_accept_list(button)
-           if accept_button != None:
-               if accept_button.showing:
-                   accept_button.click()
-                   return True
+            accept_button = in_accept_list(button)
+            if accept_button != None:
+                if accept_button.showing:
+                    accept_button.click()
+                    return True
         return False
 
 class Open(GnucashWindow):
@@ -217,7 +225,7 @@
         if name == 'location':
             self.location_txt.text = value
         else:
-            self.__dict__[name]=value
+            self.__dict__[name] = value
 
     def open_location(self, file_path):
         self.location = file_path
@@ -261,7 +269,8 @@
         self.ok_button = self.button("OK")
 
     def __setattr__(self, name, value):
-        """ Always set the account name as your last account because it changes the dialog title which may lead to failure
+        """ Always set the account name as your last account 
+        because it changes the dialog title which may lead to failure
         TODO: Fix up this issue, find a way to search using the regex, or implement it
         """
         if name == 'account_name':
@@ -295,7 +304,7 @@
             elif not value and self.tax_related_checkbox.checked:
                 self.tax_related_checkbox.click()
         else:
-            self.__dict__[name]=value
+            self.__dict__[name] = value
 
     def set_currency(self, value):
         """ TODO: Try to figure out why It does not work  """
@@ -712,9 +721,6 @@
 
 class Find(GnucashWindow):
     """ Wrapper for all gnucash Find include Find txns, Find Customer, Find Job, ... """
-    
-    def __init__(self):
-        pass
 
     def initialize(self):
         """ initialize Common components """
@@ -747,7 +753,7 @@
         predicate.GenericPredicate(roleName='radio button', name='Delete results from current search'))
 
     def add_criteria(self):
-
+        """ Add search critieria then refresh the children list """
         self.button('Add').click()
         self.text_fields_list = \
         self.search_criteria_panel.findChildren(\
@@ -759,6 +765,7 @@
 
 
     def find(self):
+        """ Click find button and return a results appears in the find dialog"""
         self.find_btn.click()
         self.result_table = self.findChild(\
         predicate.GenericPredicate(roleName='table'))
@@ -832,7 +839,7 @@
         elif name == 'template':
             self.template_combo.combovalue = value
         else:
-            self.__dict__[name]=value
+            self.__dict__[name] = value
 
     def accept(self):
         self.ok_btn.click()
@@ -888,6 +895,27 @@
         TODO: Replace XXX with a nice name, this name is terrible, i can not call other one
     """
 
+    def add_new_XXX (self, company_name=None, name=None, \
+        address_1=None, address_2=None, \
+        phone=None, fax=None, email=None, notes=None):
+        """ add new customer """
+        if company_name != None:
+            self.xxx.company_name_txt.text = company_name
+        if name != None:
+            self.xxx.name_txt.text = name
+        if address_1 != None:
+            self.xxx.address_1_txt.text = address_1
+        if address_2 != None:
+            self.xxx.address_2_txt.text = address_2
+        if phone != None:
+            self.xxx.phone_txt.text = phone
+        if fax != None:
+            self.xxx.fax_txt.text = fax
+        if email != None:
+            self.xxx.email_txt.text = email
+        if notes != None:
+            self.xxx.notes_txt.text = notes
+
     class XXX(Node):
         """ 
         Class for 
@@ -964,23 +992,57 @@
     class ShippingAddress(Node):
 
         def __init__(self, initializer):
-            Node.__init__(self, intializer)
-            self.name_txt = self.findChild(predicate.IsLabelledAs('Name: '))
-            self.address_txt = self.findChild(predicate.IsLabelledAs('Address: '))
-            self.phone_txt = self.findChild(predicate.IsLabelledAs('Phone: '))
-            self.fax_txt = self.findChild(predicate.IsLabelledAs('Fax: '))
-            self.email_txt = self.findChild(predicate.IsLabelledAs('Email: '))
+            Node.__init__(self, initializer)
+            self.shipping_address_elements = \
+            self.findChildren(predicate.GenericPredicate(roleName='text'))
+            self.name_txt = self.shipping_address_elements[0]
+            self.address_1_txt = self.shipping_address_elements[1]
+            self.address_2_txt = self.shipping_address_elements[2]
+            self.address_3_txt = self.shipping_address_elements[3]
+            self.address_4_txt = self.shipping_address_elements[4]
+            self.phone_txt = self.shipping_address_elements[5]
+            self.fax_txt = self.shipping_address_elements[6]
+            self.email_txt = self.shipping_address_elements[7]
 
+    def add_new_shipping_address(self, name=None, address_1=None, \
+        address_2=None, address_3=None, address_4=None,
+        phone=None, fax=None, email=None):
+        if name != None:
+            self.shipping_address.name_txt.text = name
+        if address_1 != None:
+            self.shipping_address.address_1_txt.text = address_1
+        if address_2 != None:
+            self.shipping_address.address_2_txt.text = address_2
+        if address_3 != None:
+            self.shipping_address.address_3_txt.text = address_3
+        if address_4 != None:
+            self.shipping_address.address_4_txt.text = address_4
+        if phone != None:
+            self.phone_txt.text = phone
+        if fax != None:
+            self.fax_txt.text = fax
+        if email != None:
+            self.email_txt.text = email
     def __init__(self):
         self.invoke_list = ["Business", "Customer", "New Customer..."]
         self.dialog_name = 'New Customer'
 
+    def add_new_customer (self, company_name=None, name=None, \
+        address_1=None, address_2=None, \
+        phone=None, fax=None, email=None, notes=None):
+        NewXXX.add_new_XXX(self, company_name, name, \
+        address_1, address_2, \
+        phone, fax, email, notes)
+
+
     def initialize(self):
         NewXXX.initialize(self)
         self.customer = self.XXX(self.tab('Customer'))
+        self.xxx = self.customer
         self.billing_information = self.YYYInformation(self.tab('Billing Information'))
         self.identification_panel = \
-        self.customer.findChild(predicate.GenericPredicate(roleName='panel', name='Identification'))
+        self.customer.findChild(\
+        predicate.GenericPredicate(roleName='panel', name='Identification'))
         self.identification_panel_element = \
         self.identification_panel.findChildren(predicate.GenericPredicate(roleName='text'))
         self.customer.customer_number_txt = self.identification_panel_element[0]
@@ -994,7 +1056,7 @@
         (roleName='combo box', \
         description='What Tax Table should be applied to this customer?'))
 
-        self.shipping_information = self.tab('Shipping Address')
+        self.shipping_address = self.ShippingAddress(self.tab('Shipping Address'))
         self.ok_btn = self.button('OK')
         self.cancel_btn = self.button('Cancel')
         self.help_btn = self.button('Help')
@@ -1095,7 +1157,7 @@
 
     def __setattr__(self, name, value):
         #TODO: Customer Text does not work
-        if name =='customer':
+        if name == 'customer':
             self.select_btn.click()
             findCustomer = FindCustomer()
             findCustomer.text_fields_list[0].text = value
@@ -1105,9 +1167,9 @@
         elif name == 'billing_id':
             self.billing_id_txt.text = value
         elif name == 'notes':
-            self.notes_txt.text =value
+            self.notes_txt.text = value
         else:
-            self.__dict__[name]=value
+            self.__dict__[name] = value
 
 class FindInvoice(Find):
     """ Find Invoice wrapper """
@@ -1151,7 +1213,7 @@
 
     def __setattr__(self, name, value):
         #TODO: Customer Text does not work
-        if name =='vendor':
+        if name == 'vendor':
             self.select_btn.click()
             find_vendor = FindVendor()
             find_vendor.text_fields_list[0].text = value
@@ -1161,9 +1223,9 @@
         elif name == 'billing_id':
             self.billing_id_txt.text = value
         elif name == 'notes':
-            self.notes_txt.text =value
+            self.notes_txt.text = value
         else:
-            self.__dict__[name]=value
+            self.__dict__[name] = value
 
 class FindBill(Find):
     """ Find Bill wrapper """
@@ -1439,7 +1501,7 @@
         elif name == 'company_id':
             self.company_id_txt.text = value
         else:
-            self.__dict__[name]=value
+            self.__dict__[name] = value
 
 
 class Question(Window):
@@ -1471,7 +1533,7 @@
             elif not value and self.accumulate_splits_cb.checked:
                 self.accumulate_splits_cb.click()
         else:
-            self.__dict__[name]=value
+            self.__dict__[name] = value
     def accept(self):
         self.button('OK').click()
 
@@ -1503,7 +1565,7 @@
             elif not value and self.include_subaccount_cb.checked:
                 self.include_subaccount_cb.click()
         else:
-            self.__dict__[name]=value
+            self.__dict__[name] = value
 
 class ReconcileFrame(Node):
 
@@ -1520,7 +1582,7 @@
             elif name == 'column':
                 self.column_table_cell = value
             else:
-                self.__dict__[name]=value
+                self.__dict__[name] = value
 
         def click(self, row=None, column=None):
             """ Another row - column based controls i found no action assigned with this table cell Only Activate which does not work because dogtail does not detect the position correctly """
@@ -1557,12 +1619,13 @@
 
     def __select_all_funds(self, funds_type):
         """ Select All funds out item in funds out table """
-        funds_panel = \
-        self.findChild(predicate.GenericPredicate(roleName='panel', name=funds_type))
+        funds_panel = self.findChild(\
+        predicate.GenericPredicate(roleName='panel', name=funds_type))
         funds_table = \
         funds_panel.findChild(predicate.GenericPredicate(roleName='table'))
         funds = self.FundsTable(funds_table)
-        tabel_cell_list = funds_panel.findChildren(predicate.GenericPredicate(roleName='table cell'), recursive=True)
+        tabel_cell_list = funds_panel.findChildren(\
+        predicate.GenericPredicate(roleName='table cell'), recursive=True)
         for i in  range((len(tabel_cell_list)/5)):
             funds.row = i
             funds.col = 2
@@ -1584,25 +1647,17 @@
     gnucash = GnuCashApp()
     # Post to Asset:Accounts Receivable 
     # add new customer 
-    #new_customer = NewCustomer()
-    #new_customer.invoke()
-    #new_customer.customer.company_name_txt.text = 'ABC Inc'
-    #new_customer.customer.name_txt.text = 'Bob McBob'
-    #new_customer.customer.address_1_txt.text = '123 First Ave.'
-    #new_customer.customer.address_2_txt.text = 'Somecity, SS 12345'
-    #new_customer.customer.phone_txt.text = '515-234-5678'
-    #new_customer.customer.fax_txt.text = '515-235-5679'
-    #new_customer.customer.email_txt.text = 'abc at abc.com'
-    #new_customer.customer.notes_txt.text = 'Bob McBobs, Sales Dept.'
-    #new_customer.accept()
+    new_customer = NewCustomer()
+    new_customer.invoke()
+    new_customer.add_new_customer('name')
+    new_customer.add_new_shipping_address('name','address1','address2')
+    #findCustomer = FindCustomer()
+    #findCustomer.text_fields_list[0].text = "."
+    #findCustomer.search_by_list[0].combovalue = 'Customer ID'
+    #findCustomer.search_by_list[1].combovalue = 'matches regex'
+    #findCustomer.add_criteria()
+    #findCustomer.text_fields_list[0].text = "x"
+    #findCustomer.search_by_list[0].combovalue = 'Company Name'
+    #findCustomer.search_by_list[1].combovalue = 'contains'
 
-    findCustomer = FindCustomer()
-    findCustomer.text_fields_list[0].text = "."
-    findCustomer.search_by_list[0].combovalue = 'Customer ID'
-    findCustomer.search_by_list[1].combovalue = 'matches regex'
-    findCustomer.add_criteria()
-    findCustomer.text_fields_list[0].text = "x"
-    findCustomer.search_by_list[0].combovalue = 'Company Name'
-    findCustomer.search_by_list[1].combovalue = 'contains'
-
-    print (findCustomer.find())
+    #print (findCustomer.find())



More information about the gnucash-changes mailing list