From 3c924f0cae9d2e1f53bbba980dd99ea58eacc52d Mon Sep 17 00:00:00 2001 From: John Vonelli Date: Mon, 19 Feb 2018 18:17:55 -0500 Subject: [PATCH 01/12] Initial commit --- src/beerapi.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/beerapi.py diff --git a/src/beerapi.py b/src/beerapi.py new file mode 100644 index 0000000..c9f13c9 --- /dev/null +++ b/src/beerapi.py @@ -0,0 +1,20 @@ +import datetime +import requests +import time + +def get_beer_data(): + result = requests.get("http://www.tanczos.com/tanczos.com/beerinventory/webexport.csv") + filename = str(datetime.datetime.now()).replace(' ', '_') + '.csv' + with open(filename, "w") as outfile: + for line in result.text: + outfile.write(line) + +while True: + try: + get_beer_data() + time.sleep(3600) + print("waiting...") + except: + print("WHOOPSIE") + time.sleep(3600) + continue From 88233876b4a17da14c81069d3c8f20cf59af5ca6 Mon Sep 17 00:00:00 2001 From: John Vonelli Date: Mon, 19 Feb 2018 18:18:33 -0500 Subject: [PATCH 02/12] Initial commit --- src/beerapi.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/beerapi.py b/src/beerapi.py index c9f13c9..d0d4c6b 100644 --- a/src/beerapi.py +++ b/src/beerapi.py @@ -13,8 +13,6 @@ def get_beer_data(): try: get_beer_data() time.sleep(3600) - print("waiting...") except: - print("WHOOPSIE") time.sleep(3600) continue From a2acafd4bbe3d16f02941f181dbf771fc8ffbe1c Mon Sep 17 00:00:00 2001 From: Steve MacDonald Date: Mon, 19 Feb 2018 22:43:35 -0500 Subject: [PATCH 03/12] Creates a simple MySQL database All data is stored in one table since I am making all fields directly dependent on the id field. --- inventory_data.sql | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 inventory_data.sql diff --git a/inventory_data.sql b/inventory_data.sql new file mode 100644 index 0000000..a712e80 --- /dev/null +++ b/inventory_data.sql @@ -0,0 +1,16 @@ +DROP DATABASE inventory_data; + +CREATE DATABASE inventory_data; + +USE inventory_data; + +CREATE TABLE Inventory ( + id INT(3) NOT NULL PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(50), + size VARCHAR(20), + category VARCHAR(20), + quantity_available FLOAT UNSIGNED, + retail_price FLOAT UNSIGNED, + case_retail_price FLOAT UNSIGNED, + case_pack INT UNSIGNED; +) From 2a531421dc0072694459566487773aa779850481 Mon Sep 17 00:00:00 2001 From: mtnesbitt Date: Tue, 20 Feb 2018 12:26:43 -0500 Subject: [PATCH 04/12] Add a base implementation of the beerapi --- src/beerapi.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/beerapi.py diff --git a/src/beerapi.py b/src/beerapi.py new file mode 100644 index 0000000..f2a8f7d --- /dev/null +++ b/src/beerapi.py @@ -0,0 +1,11 @@ +#Clean Code rename +import requests +import datetime +import time + +while True: + beer_inventory = requests.get('http://www.tanczos.com/tanczos.com/beerinventory/webexport.csv') + filename = str(datetime.datetime.now()).replace(' ', '_') + '.csv' + beer_inventory_file = open(filename, "w+") + beer_inventory_file.write(beer_inventory.text) + time.sleep(3600) From 6f14019d3da70d93c0c2b5a441916350664f35d1 Mon Sep 17 00:00:00 2001 From: mtnesbitt Date: Tue, 20 Feb 2018 12:29:44 -0500 Subject: [PATCH 05/12] Add git ignores --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..451fb35 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +.idea \ No newline at end of file From 54ee1f0e412b9c30fa011f86bb66f1074dae2d86 Mon Sep 17 00:00:00 2001 From: Jose Meono Date: Wed, 21 Feb 2018 17:22:52 -0500 Subject: [PATCH 06/12] Implement logging and go function --- src/beerapi.py | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/beerapi.py b/src/beerapi.py index f5b10cf..2d82db5 100644 --- a/src/beerapi.py +++ b/src/beerapi.py @@ -2,17 +2,28 @@ import datetime import time + +import logging + +logging.basicConfig(filename= 'test.log',level=logging.INFO,format='%(asctime)s:%(message)s') + + + def get_beer_data(): beer_inventory = requests.get('http://www.tanczos.com/tanczos.com/beerinventory/webexport.csv') filename = str(datetime.datetime.now()).replace(' ', '_') + '.csv' beer_inventory_file = open(filename, "w+") beer_inventory_file.write(beer_inventory.text) - time.sleep(3600) - -while True: - try: - get_beer_data() - time.sleep(3600) - except: - time.sleep(3600) - continue \ No newline at end of file + + +def go(): + + while True: + try: + get_beer_data() + logging.info('The data was fetched successfully!') + time.sleep(1200) + except: + logging.exception('Failed to fetch file:') + time.sleep(1200) + pass \ No newline at end of file From 0ce50d7d8b8f77faf4e8f0b7e56dc8221868a187 Mon Sep 17 00:00:00 2001 From: Steve MacDonald Date: Thu, 22 Feb 2018 09:08:59 -0500 Subject: [PATCH 07/12] Adds datetime field and indexing, splits size field into three Adding a datetime field necessitated two tables, one for static information and one for variable. It also means we will need indexing since we will be storing significantly more data. The size field, upon further inspection, actually holds the information for 2 or 3 fields depending whether the entry is for kegs or cans/bottles. This has been split into 3 separate fields - containers_per_pack, container_size and container_type. Additionally the case_pack field has been renamed to better reflect the values being stored there. --- inventory_data.sql | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/inventory_data.sql b/inventory_data.sql index a712e80..d773252 100644 --- a/inventory_data.sql +++ b/inventory_data.sql @@ -4,13 +4,24 @@ CREATE DATABASE inventory_data; USE inventory_data; -CREATE TABLE Inventory ( - id INT(3) NOT NULL PRIMARY KEY AUTO_INCREMENT, - name VARCHAR(50), - size VARCHAR(20), - category VARCHAR(20), - quantity_available FLOAT UNSIGNED, - retail_price FLOAT UNSIGNED, - case_retail_price FLOAT UNSIGNED, - case_pack INT UNSIGNED; +CREATE TABLE inventory( + beerID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(500), + containers_per_pack INT, + container_size VARCHAR(200), + container_type VARCHAR(100), + category VARCHAR(200), + packs_per_case INT; ) + +CREATE TABLE purchasing_details( + dt DATETIME DEFAULT CURRENT_TIMESTAMP, + quantity_available FLOAT, + retail_price FLOAT, + case_retail_price FLOAT, + id INT NOT NULL FOREIGN KEY REFERENCES Inventory(beerID); +) + +-- Rename fields +CREATE INDEX AUTHOR_INDEX +ON Inventory_availability(dt); From b7f7cea1c0bf089111d1c25513b4bf08cfc904e6 Mon Sep 17 00:00:00 2001 From: John Vonelli Date: Thu, 22 Feb 2018 18:38:14 -0500 Subject: [PATCH 08/12] Add .gitignore file --- .gitignore | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ac90117 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.env/ +.idea/ +.DS_Store +.pytest_cache +.cache/ +*__pycache__/ +*.egg-info/ From 77fea996342b6455f7fcbb5fbd91c2b98e83fc96 Mon Sep 17 00:00:00 2001 From: John Vonelli Date: Thu, 22 Feb 2018 18:54:10 -0500 Subject: [PATCH 09/12] Add documentation for file --- src/beerapi.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/beerapi.py b/src/beerapi.py index f5b10cf..4b8bcb1 100644 --- a/src/beerapi.py +++ b/src/beerapi.py @@ -3,16 +3,24 @@ import time def get_beer_data(): + """ + Retrieves inventory data from Tanczos and saves data locally + + Input: + Parameterless + + Output: + Returns void and writes a csv file locally + """ beer_inventory = requests.get('http://www.tanczos.com/tanczos.com/beerinventory/webexport.csv') filename = str(datetime.datetime.now()).replace(' ', '_') + '.csv' beer_inventory_file = open(filename, "w+") beer_inventory_file.write(beer_inventory.text) - time.sleep(3600) while True: try: get_beer_data() - time.sleep(3600) except: - time.sleep(3600) - continue \ No newline at end of file + pass + + time.sleep(3600) \ No newline at end of file From 4d13e37a2713b4cc0a106125bd5fed48174dd7db Mon Sep 17 00:00:00 2001 From: Steve MacDonald Date: Thu, 22 Feb 2018 19:27:12 -0500 Subject: [PATCH 10/12] Fixes a typo --- inventory_data.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inventory_data.sql b/inventory_data.sql index d773252..5d891cc 100644 --- a/inventory_data.sql +++ b/inventory_data.sql @@ -23,5 +23,5 @@ CREATE TABLE purchasing_details( ) -- Rename fields -CREATE INDEX AUTHOR_INDEX +CREATE INDEX DATETIME_INDEX ON Inventory_availability(dt); From d7325e39dce9b886d0c37f0134d0ea21cb0a7054 Mon Sep 17 00:00:00 2001 From: mtnesbitt Date: Fri, 23 Feb 2018 10:37:21 -0500 Subject: [PATCH 11/12] Write to file using with function and modify names. --- src/beerapi.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/beerapi.py b/src/beerapi.py index f5b10cf..5f94b56 100644 --- a/src/beerapi.py +++ b/src/beerapi.py @@ -2,17 +2,20 @@ import datetime import time -def get_beer_data(): +def write_beer_inventory(): beer_inventory = requests.get('http://www.tanczos.com/tanczos.com/beerinventory/webexport.csv') filename = str(datetime.datetime.now()).replace(' ', '_') + '.csv' - beer_inventory_file = open(filename, "w+") - beer_inventory_file.write(beer_inventory.text) - time.sleep(3600) + with open(filename, "w+") as beer_inventory_file: + beer_inventory_file.write(beer_inventory.text) -while True: - try: - get_beer_data() - time.sleep(3600) - except: - time.sleep(3600) - continue \ No newline at end of file + +def run(): + while True: + try: + write_beer_inventory() + except: + pass + time.sleep(1200) + +if __name__ == "__main__": + run() From 985fc0a26b00e4471e1686ae90ff1296076d35e4 Mon Sep 17 00:00:00 2001 From: Steve MacDonald Date: Fri, 2 Mar 2018 12:15:46 -0500 Subject: [PATCH 12/12] Changes dt field so it no longer stores a timestamp, just datetime --- src/inventory_data.sql | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/inventory_data.sql diff --git a/src/inventory_data.sql b/src/inventory_data.sql new file mode 100644 index 0000000..2286452 --- /dev/null +++ b/src/inventory_data.sql @@ -0,0 +1,27 @@ +DROP DATABASE inventory_data; + +CREATE DATABASE inventory_data; + +USE inventory_data; + +CREATE TABLE inventory( + beerID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(500), + containers_per_pack INT, + container_size VARCHAR(200), + container_type VARCHAR(100), + category VARCHAR(200), + packs_per_case INT; +) + +CREATE TABLE purchasing_details( + dt DATETIME DEFAULT, + quantity_available FLOAT, + retail_price FLOAT, + case_retail_price FLOAT, + id INT NOT NULL FOREIGN KEY REFERENCES Inventory(beerID); +) + +-- Rename fields +CREATE INDEX DATETIME_INDEX +ON Inventory_availability(dt);