def test_load_order_completed(self): from objects import Order from os import mkdir, remove, rmdir, path from processes.load import load_order order = Order(self.shift.deliveries[0]) file_list = order.file_list() # create file and directory mkdir(self.shift.deliveries[0].file_list()['directory']) with open(file_list['info'], 'w') as info_file: info_file.write(self.shift.deliveries[0].orders[0].csv()) # check that file was created and baseline self.assertTrue(path.exists(file_list['info'])) self.assertIsNot(order.tip, self.shift.deliveries[0].orders[0].tip) self.assertNotEqual(order.miles_traveled, self.shift.deliveries[0].orders[0].miles_traveled) self.assertNotEqual(order.end_time, self.shift.deliveries[0].orders[0].end_time) # run function order = load_order(order) # check that data was loaded correctly self.assertEqual(order.tip.csv(), self.shift.deliveries[0].orders[0].tip.csv()) self.assertEqual(order.miles_traveled, self.shift.deliveries[0].orders[0].miles_traveled) self.assertEqual(order.end_time, self.shift.deliveries[0].orders[0].end_time) # delete file and directory remove(file_list['info']) rmdir(self.shift.deliveries[0].file_list()['directory'])
def test_revise_order_build_confirmation(self): from objects import Shift, Delivery, Order, Tip from processes.revise import Revise_Order from utility.utility import now # id order = Order(Delivery(Shift(now().date()))) test = Revise_Order(order, test=True) test.user_selection = '1' test.build_confirmation() # tip order = Order(Delivery(Shift(now().date()))) test = Revise_Order(order, test=True) test.user_selection = '2' test.build_confirmation() # distance order = Order(Delivery(Shift(now().date()))) test = Revise_Order(order, test=True) test.user_selection = '3' test.build_confirmation() # end time order = Order(Delivery(Shift(now().date()))) test = Revise_Order(order, test=True) test.user_selection = '4' test.build_confirmation() # save order = Order(Delivery(Shift(now().date()))) test = Revise_Order(order, test=True) test.user_selection = 's' test.build_confirmation()
def load_delivery_orders(delivery): from objects import Order from os import path from utility.file import Read order_ids_file = Order(delivery).file_list()['completed_ids'] if path.exists(order_ids_file): # ids delivery.order_ids = Read(order_ids_file).integer_list() # orders delivery.orders =\ [Order(delivery, id).load_completed() for id in delivery.order_ids] return delivery
def test_add_order(self): from objects import Order self.assertEqual(self.delivery.orders, []) order_1 = Order(self.delivery, 5) self.delivery.add_order(order_1) self.assertIn(5, self.delivery.order_ids) self.assertIn(order_1, self.delivery.orders) order_2 = Order(self.delivery, 748) self.delivery.add_order(order_2) self.assertIn(748, self.delivery.order_ids) self.assertIn(order_2, self.delivery.orders)
def process(self, symbol): data = self.services.bus.get_market_data() self.services.logger.info("Market data received %s" % (data)) if self.x >= 0: self.services.logger.info("Sending Order Now:") o = Order() o.side = 1 o.price = data[symbol]["ask-1"]["price"] o.size = 5000000 o.leaves = o.size o.symbol = symbol o.id = "MyOrder" self.services.order_dispatcher.new_order(o) self.x += 1 print "!!!!!!!!!!!!!!!!!!! ", data["a"]["event"] if data["a"]["event"] == "trade": self.services.publisher.publish("DummyAgent", {"bid": data[symbol]["bid-0"]["price"], "ask": data[symbol]["ask-0"]["price"], "bid_size": data[symbol]["bid-0"]["size"], "ask_size": data[symbol]["ask-0"]["size"], "price": data[symbol]["last"]["price"], "quantity": data[symbol]["last"]["quantity"], "time": data[symbol]["time"]})
def process(self, symbol): data = self.services.bus.get_market_data() self.services.logger.info("Market data received %s" % (data)) self.services.logger.info("Sending Order Now:") o = Order() o.side = 1 if str(self.parameters["side"]).lower() == "buy" else -1 o.price = self.parameters["price"] o.size = self.parameters["size"] o.leaves = o.size o.symbol = "Euronext" o.id = "MyOrder" o.timeinforce = "ioc" o.parent = self.parameters["id"] self.services.order_dispatcher.new_order(o)
def process_order(customerId, productId, quantity): order = Order(customerId=customerId, productId=productId, quantity=quantity) db.session.add(order) db.session.commit() return order
def build_prompt(self): from objects import Extra_Stop, Order from os import path from utility.utility import add_newlines # initial self.prompt = self.display_text['initial'] + '\n' # order order_index = 0 if path.exists(Order(self.delivery).file_list()['directory']): order_index = 1 self.prompt += f'O. {self.display_text["order"][order_index]}\n' # extra stop extra_stop_index = 0 if path.exists(Extra_Stop(self.delivery).file_list()['directory']): extra_stop_index = 1 self.prompt +=\ f'E. {self.display_text["extra_stop"][extra_stop_index]}\n' # complete self.prompt += f'C. {self.display_text["end"]}\n' # view self.prompt += f'V. {self.display_text["view"]}\n' # revise self.prompt += f'R. {self.display_text["revise"]}\n' # back self.prompt += f'B. {self.display_text["back"]}\n' self.prompt = add_newlines(self.prompt)
def build_confirmation_text(self): import re from os import path # delivery if self.user_selection.lower() == 'o': from objects import Order if not path.exists(Order(self.delivery).file_list()['directory']): self.confirmation_text = self.display_text['order'][0] else: self.confirmation_text = self.display_text['order'][1] # extra stop elif self.user_selection.lower() == 'e': from objects import Extra_Stop extra_stop_directory =\ Extra_Stop(self.delivery).file_list()['directory'] if not path.exists(extra_stop_directory): self.confirmation_text = self.display_text['extra_stop'][0] else: self.confirmation_text = self.display_text['extra_stop'][1] # complete elif self.user_selection.lower() == 'c': self.confirmation_text = self.display_text['end'] # revise elif self.user_selection.lower() == 'r': self.confirmation_text = self.display_text['revise']
def process(self, symbol): data = self.services.bus.get_market_data() pretty(data) #display market data l = list() for item1 in data.items(): if type(item1[1]) is not datetime and type(item1[1]) is not str: for item2 in item1[1].items(): if (item2[0][:3] == 'ask' and str(self.parameters["side"]).lower() == "buy") or (item2[0][:3] == 'bid' and str(self.parameters["side"]).lower() == "sell") : l.append((item2[1]["price"], item1[0])) if str(self.parameters["side"]).lower() == "buy": l.sort(key=lambda x: x[0]) else: l.sort(key=lambda x: -x[0]) print(l) #display list of prices by market ordered by prices self.current_size = self.parameters["size"] i = 0 for pair in l: if self.current_size == 0: #stop if no more deals break o = Order() o.side = 1 if str(self.parameters["side"]).lower() == "buy" else -1 o.price = pair[0] #dont buy / sell if the price is too high or too low if o.price < self.parameters["price"] and o.side == -1: break if o.price > self.parameters["price"] and o.side == 1: break o.size = self.current_size o.leaves = o.size o.symbol = pair[1] o.id = "MyOrder_" + str(i) o.timeinforce = "ioc" o.parent = self.parameters["id"] self.services.logger.info("Sending Order " + str(i)) self.services.order_dispatcher.new_order(o) i = i +1
def result(self): # order if self.user_selection.lower() == 'o': from objects import Order import os from processes.consolidate import consolidate_order from processes.track import track_order order = Order(self.delivery) if os.path.exists(order.file_list()['directory']): order.load_current() order = track_order(order) consolidate_order(order) self.delivery.add_order(order) # extra stop elif self.user_selection.lower() == 'e': from objects import Extra_Stop import os from processes.consolidate import consolidate_extra_stop from processes.track import track_extra_stop extra_stop = Extra_Stop(self.delivery).load_current() extra_stop = track_extra_stop(extra_stop) consolidate_extra_stop(extra_stop) self.delivery.add_extra_stop(extra_stop) # complete elif self.user_selection.lower() == 'c': from processes.consolidate import consolidate_delivery from processes.track import end_delivery self.delivery = end_delivery(self.delivery) consolidate_delivery(self.delivery) self.loop_condition = False self.complete = True # view elif self.user_selection.lower() == 'v': View_Delivery_Menu(self.delivery) # revise elif self.user_selection.lower() == 'r': from processes.revise import Revise_Delivery revise_delivery = Revise_Delivery(self.delivery) self.delivery = revise_delivery.delivery # back elif self.user_selection.lower() == 'b': self.loop_condition = False
def test_view_order_main(self): from datetime import datetime from objects import Shift, Delivery, Order, Tip from processes.view import view_order from utility.utility import now, To_Datetime # no data entered order = Order(Delivery(Shift(now().date())), 123) test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tTotal tip: $0.00\n' self.assertEqual(test, expected) # card order.tip = Tip(3.97) test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tCard tip: $3.97\n' self.assertEqual(test, expected) # cash order.tip = Tip(cash=3.97) test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tCash tip: $3.97\n' self.assertEqual(test, expected) # card and cash order.tip = Tip(3, 2) test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tTotal tip: $5.00\n'\ '\tCard tip: $3.00\n'\ '\tCash tip: $2.00\n' self.assertEqual(test, expected) # unknown order.tip = Tip(unknown=3.97) test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tUnknown tip: $3.97\n' self.assertEqual(test, expected) # distance order.miles_traveled = 3.9 test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tUnknown tip: $3.97\n'\ '\tDistance to address: 3.9 miles\n' self.assertEqual(test, expected) # end time order.end_time = datetime.strptime('15:27:42', '%H:%M:%S') test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tUnknown tip: $3.97\n'\ '\tDistance to address: 3.9 miles\n'\ '\tCompleted at: 03:27:42 PM\n' self.assertEqual(test, expected)
def test_revise_order_build_prompt(self): from objects import Shift, Delivery, Order, Tip from processes.revise import Revise_Order from utility.utility import now order = Order(Delivery(Shift(now().date()))) test = Revise_Order(order, test=True) test.build_prompt() expected =\ '\n- Revise Order -\n'\ '1. Add/edit I.D.\n'\ '2. Add/edit tip\n'\ '3. Add/edit miles traveled\n'\ '4. Add/edit end time\n'\ 'V. View current order values\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected)
def test_revise_delivery_build_prompt(self): from datetime import datetime from processes.revise import Revise_Delivery from objects import Shift, Delivery, Order, Extra_Stop from utility.utility import now # no data added yet delivery = Delivery(Shift(now().date())) test = Revise_Delivery(delivery, test=True) test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Add start time\n'\ '2. Add miles traveled\n'\ '3. Add average speed\n'\ '4. Add end time\n'\ 'O. Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # start time added test.delivery.start_time = datetime.strptime('15:27:42', '%H:%M:%S') test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Add miles traveled\n'\ '3. Add average speed\n'\ '4. Add end time\n'\ 'O. Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # miles traveled added test.delivery.miles_traveled = 4.7 test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Add average speed\n'\ '4. Add end time\n'\ 'O. Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # average speed added test.delivery.average_speed = 17 test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Revise average speed\n'\ '4. Add end time\n'\ 'O. Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # end time added test.delivery.end_time = datetime.strptime('15:37:42', '%H:%M:%S') test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Revise average speed\n'\ '4. Revise end time\n'\ 'O. Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # one order added test.delivery.order_id = [0] test.delivery.orders = [Order(delivery)] test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Revise average speed\n'\ '4. Revise end time\n'\ 'O. Revise order/Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # two orders added test.delivery.order_id = [0, 1] test.delivery.orders = [Order(delivery), Order(delivery, 1)] test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Revise average speed\n'\ '4. Revise end time\n'\ 'O. Select an order/Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # extra stop added test.delivery.extra_stop_id = [0] test.delivery.extra_stops = [Extra_Stop(delivery)] test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Revise average speed\n'\ '4. Revise end time\n'\ 'O. Select an order/Add order\n'\ 'E. Revise extra stop\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # two extra stops added test.delivery.extra_stop_id = [0, 1] test.delivery.extra_stops =\ [Extra_Stop(delivery), Extra_Stop(delivery, 1)] test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Revise average speed\n'\ '4. Revise end time\n'\ 'O. Select an order/Add order\n'\ 'E. Select an extra stop\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected)