diff --git a/XMLTesting.py b/XMLTesting.py index f95de58..ff7d769 100644 --- a/XMLTesting.py +++ b/XMLTesting.py @@ -1,46 +1,38 @@ from bs4 import BeautifulSoup as bs import csv -with open("Config_ORIG.xml") as f: - r = f.read() - -y = bs(r, "lxml") - -ClientName = [] -SF_URL = [] -SF_HOST = [] - -for x in y.find_all('name'): - # print(x.text) - ClientName.append(x.text) -# print(ClientName) - -for x in y.find_all('storefrontapiurl'): - # print(x) - SF_URL.append(x.text) -# print(SF_URL) - -for x in SF_URL: - temp1 = x.split('://') - temp2 = temp1[1].split('/') - HOST = (temp2[0]) - SF_HOST.append(HOST) -# print(SF_HOST) - - -choice = 0 -for x in ClientName: - print(choice, x) - choice = choice + 1 - -yeah = int(input()) -print(SF_URL[yeah]) -print(SF_HOST[yeah]) - - - - +####REPORT SELECTION TESTING##### +# +# with open("Config_ORIG.xml") as f: +# r = f.read() +# +# y = bs(r, "lxml") +# +# ClientName = [] +# SF_URL = [] +# SF_HOST = [] +# CLIENT_SUMMARY_TAB = [] +# SUMMARY_TAB = [] +# +# for x in y.find_all('name'): +# # print(x.text) +# ClientName.append(x.text) +# # print(ClientName) +# +# +# for w in y.find_all('client'): +# for x in w.find_all('monthlyreport'): +# for g in x.find_all('summarytab'): +# for z in g.find_all('columnname'): +# z.name="string" +# CLIENT_SUMMARY_TAB.append(z) +# SUMMARY_TAB.append(CLIENT_SUMMARY_TAB) +# CLIENT_SUMMARY_TAB = [] +# +# print(SUMMARY_TAB[1]) +# REPORT_FIELDS = '\n'.join(map(str, SUMMARY_TAB[1])) +# print(REPORT_FIELDS) @@ -51,10 +43,79 @@ print(SF_HOST[yeah]) +####REPORT SELECTION TESTING SUMMARY TAB##### +# +# with open("Config_ORIG.xml") as f: +# r = f.read() +# +# y = bs(r, "lxml") +# +# ClientName = [] +# SF_URL = [] +# SF_HOST = [] +# CLIENT_SUMMARY_TAB = [] +# SUMMARY_TAB = [] +# +# for x in y.find_all('name'): +# # print(x.text) +# ClientName.append(x.text) +# # print(ClientName) +# +# +# for w in y.find_all('client'): +# for x in w.find_all('monthlyreport'): +# for g in x.find_all('summarytab'): +# for z in g.find_all('columnname'): +# z.name="string" +# CLIENT_SUMMARY_TAB.append(z) +# SUMMARY_TAB.append(CLIENT_SUMMARY_TAB) +# CLIENT_SUMMARY_TAB = [] +# +# print(SUMMARY_TAB[1]) +# REPORT_FIELDS = '\n'.join(map(str, SUMMARY_TAB[1])) +# print(REPORT_FIELDS) +#####XML CLIENT/URL CONFIG AND MENU TESTING##### + +# with open("Config_ORIG.xml") as f: +# r = f.read() +# +# y = bs(r, "lxml") +# +# ClientName = [] +# SF_URL = [] +# SF_HOST = [] +# +# for x in y.find_all('name'): +# # print(x.text) +# ClientName.append(x.text) +# # print(ClientName) +# +# for x in y.find_all('storefrontapiurl'): +# # print(x) +# SF_URL.append(x.text) +# # print(SF_URL) +# +# for x in SF_URL: +# temp1 = x.split('://') +# temp2 = temp1[1].split('/') +# HOST = (temp2[0]) +# SF_HOST.append(HOST) +# # print(SF_HOST) +# +# +# choice = 0 +# for x in ClientName: +# print(choice, x) +# choice = choice + 1 +# +# yeah = int(input()) +# print(SF_URL[yeah]) +# print(SF_HOST[yeah]) +####REPORT XML PARSING TESTS##### # r = 'G-SOPREMA-063AF3D7$ 47.46G-SOPREMA-93A6C270$ 37.06G-SOPREMA-93A6C26C$ 66.24G-SOPREMA-EE315084$ 61.38G-SOPREMA-EE31507A$ 59.74G-SOPREMA-4B89DBE6$ 83.13G-SOPREMA-338039BA$ 46.38G-SOPREMA-90D8C520$ 47.46G-SOPREMA-90D8C519$ 134.80G-SOPREMA-90D8C516$ 77.54G-SOPREMA-C0EC0977$ 61.05G-SOPREMA-C0EC0975$ 145.31G-SOPREMA-A8E26745$ 93.64G-063AF2AB$ 77.32G-F0FF4DBC$ 59.72G-EE315064$ 43.52G-EE31505B$ 36.54G-4B89DBC2$ 72.35G-90D8C4FF$ 59.01G-90D8C4FB$ 87.88G-63937DF3$ 109.39G-C0EC095E$ 41.42G-A8E26728$ 64.25G-A8E26726$ 40.35G-063AF294$ 0.00G-063AF28E$ 416.77G-C0EC093B$ 26.50G-C0EC093A$ 71.67G-E4909E2D$ 40.67G-9F41B4F7$ 155.14G-41DA2992$ 40.04G-FC8B405C$ 110.41G-44A926E9$ 40.38G-872A12C8$ 44.44G-9F33B4F7$ 181.27G-59E4CBC1$ 147.05G-A202B24E$ 40.63G-59E5CBC1$ 40.64G-44AB26E9$ 40.64G-29D38763$ 40.64G-FC8E405C$ 39.57G-B73F5726$ 39.98G-A204B24E$ 39.57G-E4859E2D$ 129.38G-9F36B4F7$ 61.40G-B7405726$ 40.60G-29D58763$ 40.60G-41DF2992$ 40.60G-FC90405C$ 44.07G-44AE26E9$ 40.60G-29D68763$ 40.60G-E4879E2D$ 40.60G-9F38B4F7$ 49.08G-59E9CBC1$ 86.02G-44AF26E9$ 129.01G-873012C8$ 159.52G-FC92405C$ 39.33G-44B626EA$ 40.60G-29DE8764$ 43.74G-E48F9E2E$ 40.60G-9F40B4F8$ 44.75G-59F1CBC2$ 100.90G-44B726EA$ 129.01G-29DF8764$ 133.81G-E4909E2E$ 129.01G-9F41B4F8$ 127.24G-59F2CBC2$ 40.31G-44A826EA$ 40.60G-E4819E2E$ 54.03G-9F32B4F8$ 69.62G-29D18764$ 61.64G-E4829E2E$ 41.59G-9F33B4F8$ 61.01G-59E4CBC2$ 64.27G-44AA26EA$ 61.64G-E4839E2E$ 41.59G-9F34B4F8$ 40.01G-B73E5727$ 39.60G-872C12C9$ 43.04G-41DD2993$ 41.53G-FC8E405D$ 43.04G-44AC26EA$ 39.54G-29D48764$ 39.54G-E4859E2E$ 41.53G-FC8F405D$ 40.28G-B7405727$ 41.53G-E4869E2E$ 40.57G-9F37B4F8$ 89.13G-59E8CBC2$ 89.13G-44AE26EA$ 40.25G-872F12C9$ 54.16G-41E02993$ 39.92G-FC91405D$ 39.51G-44AF26EA$ 120.84G-29D78764$ 39.27G-E4889E2E$ 39.92G-FC92405D$ 61.24G-B7435727$ 41.49G-A20EB250$ 41.49G-59F1CBC3$ 39.92G-44B726EB$ 40.54G-29DF8765$ 41.49G-E4909E2F$ 42.96G-9F41B4F9$ 107.82G-B74B5728$ 50.23G-A200B250$ 81.50G-872912CA$ 0.00G-FC8B405E$ 151.17G-44A926EB$ 42.93G-29D18765$ 41.44G-E4829E2F$ 41.44G-44AA26EB$ 53.74G-B73F5728$ 42.04G-A204B250$ 39.04G-872D12CA$ 42.04G-41DE2994$ 39.04G-FC8F405E$ 42.04G-B7405728$ 39.04G-A205B250$ 39.04G-FC90405E$ 42.04G-B7415728$ 43.26G-872F12CA$ 39.04G-41E02994$ 39.04G-FC91405E$ 42.04G-44AF26EB$ 40.15G-29D78765$ 40.15G-41E12994$ 45.13G-FC92405E$ 51.28G-29DE8766$ 67.94G-FC99405F$ 48.71G-B74A5729$ 67.94G-29DF8766$ 43.54G-9F41B4FA$ 39.04G-44A826EC$ 43.80G-29D08766$ 42.08G-41DA2995$ 41.76G-59E3CBC4$ 42.08G-29D18766$ 39.06G-872A12CB$ 41.79G-9F33B4FA$ 41.79G-A202B251$ 37.96G-E4839E30$ 37.96G-59E5CBC4$ 39.06G-44AB26EC$ 39.06G-29D38766$ 97.74G-41DD2995$ 75.47G-FC8E405F$ 75.47G-B73F5729$ 75.47G-A204B251$ 39.04G-872D12CB$ 43.26G-41DE2995$ 36.13G-B7405729$ 43.26G-A205B251$ 39.04G-872E12CB$ 39.04G-29D68766$ 32.50G-E4879E30$ 32.50G-9F38B4FA$ 47.50G-44AF26EC$ 47.50G-29D78766$ 0.00G-E4889E30$ 0.00G-9F39B4FA$ 0.00G-59EACBC4$ 0.00G-CDC1B798$ 0.00G-CDB4B798$ 0.00G-CDB6B798$ 0.00G-CDBAB798$ 0.00G-CDC2B789$ 0.00G-CDB7B789$ 0.00G-CDBAB789$ 0.00G-CDC2B78A$ 0.00G-CDB4B78A$ 0.00G-CDB6B78A$ 0.00G-CDB8B78A$ 0.00G-CDBAB78A$ 0.00G-CDC2B78B$ 0.00G-CDB4B78B$ 0.00G-CDB6B78B$ 0.00G-CDB8B78B$ 0.00G-CDBAB78B$ 0.00G-CDC2B78C$ 0.00G-CDB4B78C$ 0.00G-CDBAB78C$ 0.00G-CDC2B78D$ 0.00G-CDB5B78D$ 0.00G-CDB9B78D$ 0.00G-CDC2B78E$ 0.00G-CDB4B78E$ 0.00G-CDCAB78C$ 0.00G-CDCAB78E$ 0.00' # y = bs(r, "lxml") diff --git a/main.py b/main.py index 65f27dd..6e12470 100644 --- a/main.py +++ b/main.py @@ -3,11 +3,6 @@ from bs4 import BeautifulSoup as bs import csv - -ClientName = [] -SF_URL = [] -SF_HOST = [] - def Obtain_Ticket(URL, HOST): GetTicket = """ @@ -42,7 +37,7 @@ def Release_Ticket(ticket, URL, HOST): response = requests.post(url=URL, data=ReleaseTicket, headers=headers).text # print("released ticket "+ticket) -def Run_Report(ticket, URL, HOST): +def Run_Report(ticket, URL, HOST, REPORT_FIELDS): send = """ @@ -50,10 +45,7 @@ def Run_Report(ticket, URL, HOST): """+ticket+""" Orders - - Order ID - Order Price - + """+REPORT_FIELDS+""" """ @@ -69,7 +61,8 @@ def Run_Report(ticket, URL, HOST): y = bs(report, "lxml") results = [] - with open('report.csv', mode='w') as out: +# Opens report file and writes each row + with open('report.csv', mode='a') as out: out_writer = csv.writer(out, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL) for child in y.report: for childs in child: @@ -79,45 +72,76 @@ def Run_Report(ticket, URL, HOST): def loadMenu(): + ClientName = [] + SF_URL = [] + SF_HOST = [] + CLIENT_SUMMARY_TAB = [] + SUMMARY_TAB = [] + headers = [] + client_headers = [] + +# Open the config file with open("Config_ORIG.xml") as f: r = f.read() y = bs(r, "lxml") +# Get list of clients for x in y.find_all('name'): # print(x.text) ClientName.append(x.text) - # print(ClientName) +# Get Storefront API URls for x in y.find_all('storefrontapiurl'): # print(x) SF_URL.append(x.text) - # print(SF_URL) +# Get Storefront Host URLs for x in SF_URL: temp1 = x.split('://') temp2 = temp1[1].split('/') HOST = (temp2[0]) SF_HOST.append(HOST) - # print(SF_HOST) + + +# Get Monthly Report Summary Fields + for w in y.find_all('client'): + for x in w.find_all('monthlyreport'): + for g in x.find_all('summarytab'): + for z in g.find_all('columnname'): + z.name = "string" + CLIENT_SUMMARY_TAB.append(z) + client_headers.append(z.text) + SUMMARY_TAB.append(CLIENT_SUMMARY_TAB) + headers.append(client_headers) + CLIENT_SUMMARY_TAB = [] + client_headers = [] + choice = 0 for x in ClientName: print(choice, x) choice = choice + 1 - option = int(input()) - print(SF_URL[option]) - print(SF_HOST[option]) + option = int(input()) - return SF_URL[option], SF_HOST[option] +# create new report file and adds headers based on config file + with open('report.csv', mode='w') as out: + out_writer = csv.writer(out, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL) + out_writer.writerow(headers[option]) + +# converts summary_tab values to a string, adds everything to the URL_HOST array and returns it + REPORT_FIELDS = '\n'.join(map(str, SUMMARY_TAB[option])) + URL_HOST = [SF_URL[option], SF_HOST[option], REPORT_FIELDS] + return URL_HOST def main(): - loadMenu() - URL = 'http://soprema.gli.us.com/Store/storefrontapi.asmx' - HOST = 'soprema.gli.us.com' + URL_HOST = loadMenu() + URL = URL_HOST[0] + HOST = URL_HOST[1] + REPORT_FIELDS = URL_HOST[2] ticket = Obtain_Ticket(URL, HOST) - Run_Report(ticket, URL, HOST) + Run_Report(ticket, URL, HOST, REPORT_FIELDS) Release_Ticket(ticket, URL, HOST) main()