Ejemplo n.º 1
0
    def test_load_extra_stop_shift_current(self):
        from objects import Extra_Stop
        from os import mkdir, path, remove, rmdir
        from processes.load import load_extra_stop

        extra_stop = Extra_Stop(self.shift)
        file_list = extra_stop.file_list()

        # create file
        mkdir(file_list['directory'])
        with open(file_list['location'], 'w') as location_file:
            location_file.write(self.shift.extra_stops[0].location)
        with open(file_list['reason'], 'w') as reason_file:
            reason_file.write(self.shift.extra_stops[0].reason)
        with open(file_list['miles_traveled'], 'w') as miles_traveled_file:
            miles_traveled_file.write(
                str(self.shift.extra_stops[0].miles_traveled))
        with open(file_list['start_time'], 'w') as start_time_file:
            start_time_file.write(str(self.shift.extra_stops[0].start_time))
        with open(file_list['end_time'], 'w') as end_time_file:
            end_time_file.write(str(self.shift.extra_stops[0].end_time))

        # check that file was created and baseline
        self.assertTrue(path.exists(file_list['location']))
        self.assertTrue(path.exists(file_list['reason']))
        self.assertTrue(path.exists(file_list['miles_traveled']))
        self.assertTrue(path.exists(file_list['start_time']))
        self.assertTrue(path.exists(file_list['end_time']))
        self.assertNotEqual(extra_stop.location,
                            self.shift.extra_stops[0].location)
        self.assertNotEqual(extra_stop.reason,
                            self.shift.extra_stops[0].reason)
        self.assertNotEqual(extra_stop.miles_traveled,
                            self.shift.extra_stops[0].miles_traveled)
        self.assertNotEqual(extra_stop.start_time,
                            self.shift.extra_stops[0].start_time)
        self.assertNotEqual(extra_stop.end_time,
                            self.shift.extra_stops[0].end_time)

        # run function
        extra_stop = load_extra_stop(extra_stop, current=True)

        # check that data was loaded correctly
        self.assertEqual(extra_stop.location,
                         self.shift.extra_stops[0].location)
        self.assertEqual(extra_stop.reason, self.shift.extra_stops[0].reason)
        self.assertEqual(extra_stop.miles_traveled,
                         self.shift.extra_stops[0].miles_traveled)
        self.assertEqual(extra_stop.start_time,
                         self.shift.extra_stops[0].start_time)
        self.assertEqual(extra_stop.end_time,
                         self.shift.extra_stops[0].end_time)

        # delete file
        remove(file_list['location'])
        remove(file_list['reason'])
        remove(file_list['miles_traveled'])
        remove(file_list['start_time'])
        remove(file_list['end_time'])
        rmdir(file_list['directory'])
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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']
Ejemplo n.º 4
0
def load_parent_extra_stops(parent):
    from objects import Delivery, Shift
    if not isinstance(parent, (Delivery, Shift)):
        raise TypeError

    from objects import Extra_Stop
    from os import path
    from utility.file import Read

    extra_stop_ids_file = Extra_Stop(parent).file_list()['completed_ids']
    if path.exists(extra_stop_ids_file):
        # ids
        parent.extra_stop_ids = Read(extra_stop_ids_file).integer_list()
        # extra stops
        parent.extra_stops = [
            Extra_Stop(parent, id).load_completed()
            for id in parent.extra_stop_ids
        ]

    return parent
Ejemplo n.º 5
0
    def test_load_extra_stop_shift_completed(self):
        from objects import Extra_Stop
        from os import remove, path
        from processes.load import load_extra_stop

        extra_stop = Extra_Stop(self.shift)
        file_list = extra_stop.file_list()

        # create file
        with open(file_list['info'], 'w') as info_file:
            info_file.write(self.shift.extra_stops[0].nlsv())

        # check that file was created and baseline
        self.assertTrue(path.exists(file_list['info']))
        self.assertNotEqual(extra_stop.location,
                            self.shift.extra_stops[0].location)
        self.assertNotEqual(extra_stop.reason,
                            self.shift.extra_stops[0].reason)
        self.assertNotEqual(extra_stop.miles_traveled,
                            self.shift.extra_stops[0].miles_traveled)
        self.assertNotEqual(extra_stop.start_time,
                            self.shift.extra_stops[0].start_time)
        self.assertNotEqual(extra_stop.end_time,
                            self.shift.extra_stops[0].end_time)

        # run function
        extra_stop = load_extra_stop(extra_stop)

        # check that data was loaded correctly
        self.assertEqual(extra_stop.location,
                         self.shift.extra_stops[0].location)
        self.assertEqual(extra_stop.reason, self.shift.extra_stops[0].reason)
        self.assertEqual(extra_stop.miles_traveled,
                         self.shift.extra_stops[0].miles_traveled)
        self.assertEqual(extra_stop.start_time,
                         self.shift.extra_stops[0].start_time)
        self.assertEqual(extra_stop.end_time,
                         self.shift.extra_stops[0].end_time)

        # delete file
        remove(file_list['info'])
Ejemplo n.º 6
0
    def test_load_extra_stop_delivery_completed(self):
        from objects import Extra_Stop
        from os import mkdir, path, rmdir, remove
        from processes.load import load_extra_stop

        delivery = self.shift.deliveries[1]
        extra_stop = Extra_Stop(delivery)
        file_list = extra_stop.file_list()

        # create file and directory
        mkdir(delivery.file_list()['directory'])
        with open(file_list['info'], 'w') as info_file:
            info_file.write(delivery.extra_stops[0].nlsv())

        # check that file was created and baseline
        self.assertTrue(path.exists(file_list['info']))
        self.assertNotEqual(extra_stop.location,
                            delivery.extra_stops[0].location)
        self.assertNotEqual(extra_stop.reason, delivery.extra_stops[0].reason)
        self.assertNotEqual(extra_stop.miles_traveled,
                            delivery.extra_stops[0].miles_traveled)
        self.assertNotEqual(extra_stop.end_time,
                            delivery.extra_stops[0].end_time)

        # run function
        extra_stop = load_extra_stop(extra_stop)

        # check that data was loaded correctly
        self.assertEqual(extra_stop.location, delivery.extra_stops[0].location)
        self.assertEqual(extra_stop.reason, delivery.extra_stops[0].reason)
        self.assertEqual(extra_stop.miles_traveled,
                         delivery.extra_stops[0].miles_traveled)
        self.assertEqual(extra_stop.end_time, delivery.extra_stops[0].end_time)

        # delete file
        remove(file_list['info'])
        rmdir(delivery.file_list()['directory'])
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
    def build_prompt(self):
        from objects import Delivery, Extra_Stop, Split
        from os import path
        from utility.utility import add_newlines

        # initial
        self.prompt = f"\n{self.display_text['initial']}\n"
        # delivery
        delivery_index = 0
        if path.exists(Delivery(self.shift).file_list()['directory']):
            delivery_index = 1
        self.prompt += f'D. {self.display_text["delivery"][delivery_index]}\n'
        # extra stop
        extra_stop_index = 0
        if path.exists(Extra_Stop(self.shift).file_list()['directory']):
            extra_stop_index = 1
        self.prompt +=\
            f'E. {self.display_text["extra_stop"][extra_stop_index]}\n'
        # carry out tip
        self.prompt += f'C. {self.display_text["tip"]}\n'
        # split
        split_index = 0
        if path.exists(Split(self.shift).file_list()['directory']):
            split_index = 1
        self.prompt += f'S. {self.display_text["split"][split_index]}\n'
        # end shift
        end_index = 0
        if path.exists(self.shift.file_list()['end_time']):
            end_index = 1
        self.prompt += f'X. {self.display_text["end"][end_index]}\n'
        # view
        self.prompt += f'V. {self.display_text["view"]}\n'
        # revise
        self.prompt += f'R. {self.display_text["revise"]}\n'
        # quit
        self.prompt += f'Q. {self.display_text["quit"]}\n'

        self.prompt = add_newlines(self.prompt)
Ejemplo n.º 9
0
    def build_confirmation_text(self):
        from os import path

        # delivery
        if self.user_selection.lower() == 'd':
            from objects import Delivery
            if not path.exists(Delivery(self.shift).file_list()['directory']):
                self.confirmation_text = self.display_text['delivery'][0]
            else:
                self.confirmation_text = self.display_text['delivery'][1]
        # extra stop
        elif self.user_selection.lower() == 'e':
            from objects import Extra_Stop
            if not path.exists(
                    Extra_Stop(self.shift).file_list()['directory']):
                self.confirmation_text = self.display_text['extra_stop'][0]
            else:
                self.confirmation_text = self.display_text['extra_stop'][1]
        # carry out tip
        elif self.user_selection.lower() == 'c':
            self.confirmation_text = self.display_text['tip']
        # split
        elif self.user_selection.lower() == 's':
            from objects import Split
            if not path.exists(Split(self.shift).file_list()['directory']):
                self.confirmation_text = self.display_text['split'][0]
            else:
                self.confirmation_text = self.display_text['split'][1]
        # end
        elif self.user_selection.lower() == 'x':
            if not path.exists(self.shift.file_list()['end_time']):
                self.confirmation_text = self.display_text['end'][0]
            else:
                self.confirmation_text = self.display_text['end'][1]
        # revise
        elif self.user_selection.lower() == 'r':
            self.confirmation_text = self.display_text['revise']
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
    def result(self):
        # delivery
        if self.user_selection.lower() == 'd':
            from objects import Delivery
            import os
            from processes.track import start_delivery

            delivery = start_delivery(Delivery(self.shift))

            delivery_menu = Delivery_Tracking_Menu(delivery)

            if delivery_menu.complete is True:
                self.shift.add_delivery(delivery_menu.delivery)
        # extra stop
        elif self.user_selection.lower() == 'e':
            from objects import Extra_Stop
            import os
            from processes.consolidate import consolidate_extra_stop
            from processes.load import load_extra_stop
            from processes.track import track_extra_stop

            extra_stop = Extra_Stop(self.shift).load_current()
            extra_stop = track_extra_stop(extra_stop)
            consolidate_extra_stop(extra_stop)
            self.shift.add_extra_stop(extra_stop)
        # carry out tip
        elif self.user_selection.lower() == 'c':
            from objects import Tip
            from utility.file import save

            tip = Tip().input_both()
            save(tip.csv(), self.shift.file_list()['tips'], '\n')
            self.shift.carry_out_tips.append(tip)
        # split
        elif self.user_selection.lower() == 's':
            from objects import Split
            from os import path
            from processes.consolidate import consolidate_split

            if not path.exists(Split(self.shift).file_list()['start_time']):
                self.shift.split = Split(self.shift).start()
                self.loop_condition = False
            else:
                self.shift.split.end()
                consolidate_split(self.shift.split)
        # end shift
        elif self.user_selection.lower() == 'x':
            from processes.consolidate import consolidate_shift
            from processes.track import end_shift

            self.shift = end_shift(self.shift)
            consolidate_shift(self.shift)
            self.loop_condition = False
        # view
        elif self.user_selection.lower() == 'v':
            View_Shift_Menu(self.shift)
        # revise
        elif self.user_selection.lower() == 'r':
            from processes.revise import Revise_Shift
            revise_shift = Revise_Shift(self.shift)
            self.shift = revise_shift.shift
        # quit
        elif self.user_selection.lower() == 'q':
            self.loop_condition = False

        return self