Exemple #1
0
def start_shift(shift, test=False):
    from objects import Shift
    if not isinstance(shift, Shift):
        raise TypeError

    from os import path

    # get list of files and directory
    file_list = shift.file_list()

    # directory
    if not path.exists(file_list['directory']):
        from os import mkdir
        mkdir(file_list['directory'])

    # start time
    if not path.exists(file_list['start_time']):
        from utility.file import write
        if test is False:
            # set
            shift.set_start_time()
        # save
        write(shift.start_time, file_list['start_time'])

    return shift
Exemple #2
0
def start_split(split, test=False):
    from objects import Split
    if not isinstance(split, Split):
        raise TypeError

    from os import path

    file_list = split.file_list()

    # directory
    if not path.exists(file_list['directory']):
        from os import mkdir
        # create directory
        mkdir(file_list['directory'])

    # start time
    if not path.exists(file_list['start_time']):
        from utility.file import write

        if test is False:
            # input
            split.set_start_time()
        # save
        write(split.start_time, file_list['start_time'])

    return split
Exemple #3
0
def end_split(split, test=False):
    from objects import Split
    if not isinstance(split, Split):
        raise TypeError

    from os import path
    from utility.file import write

    file_list = split.file_list()

    # distance
    if not path.exists(file_list['distance']):
        if test is False:
            # input
            split.input_distance()
        # save
        write(split.distance, file_list['distance'])

    # end time
    if not path.exists(file_list['end_time']):
        if test is False:
            # set
            split.set_end_time()
        # save
        write(split.end_time, file_list['end_time'])

    return split
Exemple #4
0
def start_delivery(delivery, test=False):
    from objects import Delivery
    if not isinstance(delivery, Delivery):
        raise TypeError

    from os import path

    # get list of files and directory
    file_list = delivery.file_list()

    # create directory to store files
    if not path.exists(file_list['directory']):
        from os import mkdir
        mkdir(file_list['directory'])

    # start time
    if not path.exists(file_list['start_time']):
        from utility.file import write
        if test is False:
            # set
            delivery.set_start_time()
        # save
        write(delivery.start_time, file_list['start_time'])

    return delivery
Exemple #5
0
def consolidate_extra_stop(extra_stop):
    from objects import Extra_Stop, Shift
    if not isinstance(extra_stop, Extra_Stop):
        raise TypeError

    from os import remove, rmdir
    from utility.file import write, save

    # get list of files
    file_list = extra_stop.file_list()
    # save extra stop data to a single file
    write(extra_stop.nlsv(), file_list.pop('info'))
    # this file wont exist if the extra stop is delivery
    start_time_file = file_list.pop('start_time')
    # files to not be deleted that will be needed later
    completed_ids = file_list.pop('completed_ids')
    directory = file_list.pop('directory')
    running_id = file_list.pop('running_id')
    # delete indavidual data files
    for key in file_list:
        remove(file_list[key])
    if isinstance(extra_stop.parent, Shift):
        remove(start_time_file)
    # deleted directory after its empty
    rmdir(directory)
    # updated completed ids file
    save(extra_stop.id, completed_ids, separator=',')
    # update running id number
    write(extra_stop.id + 1, running_id)
    def change_end_time(self):
        import os
        from utility.utility import Change_Datetime

        change_time = Change_Datetime(self.end_time).time()
        self.end_time = change_time.datetime
        # update file if order has been completed
        if os.path.exists(self.file_list()['info']):
            self.save()
        # update file if order is in progress
        elif os.path.exists(self.file_list()['end_time']):
            from utility.file import write
            write(self.end_time, self.file_list()['end_time'])
    def remove_id_from_file(self):
        import os

        id_file = self.file_list()['completed_ids']

        if os.path.exists(id_file):
            from utility.file import Read, write
            # load order ids list
            id_list = Read(id_file).integer()
            # remove id from list
            if self.id in id_list:
                id_list.pop(id_list.index(self.id))
                # update file without id
                write(','.join([str(id) for id in id_list]), id_file)
 def change_tip(self):
     import os
     from processes.revise import Revise_Tip
     # user revise's tip
     revise_tip = Revise_Tip(self.tip)
     # change current tip values to new tip values
     self.tip = revise_tip.tip
     # update completed order file
     if os.path.exists(self.file_list()['info']):
         self.save()
     # update in progress tip file
     elif os.path.exists(self.file_list()['tip']):
         from utility.file import write
         write(self.tip.csv(), self.file_list()['tip'])
    def remove_id_from_file(self):
        import os

        id_file = self.file_list()['completed_ids']

        if os.path.exists(id_file):
            from utility.file import Read, write
            # load delivery ids list
            delivery_ids = Read(id_file).integer_list()
            # remove id from list
            if self.id in delivery_ids:
                delivery_ids.pop(delivery_ids.index(self.id))
                # update ids file
                write(','.join([str(id) for id in delivery_ids]), id_file)
 def change_average_speed(self):
     import os
     # display current value to user
     if self.average_speed is not None:
         print(f'\nCurrent average speed: {self.average_speed} mph')
     # user inputs new value
     self.input_average_speed()
     # update complete delivery file
     if os.path.exists(self.file_list()['info']):
         self.save()
     # update in progress file
     elif os.path.exists(self.file_list()['average_speed']):
         from utility.file import write
         write(self.average_speed, self.file_list()['average_speed'])
 def change_distance(self):
     import os
     # display current value
     if self.distance is not None:
         print(f'Current distance traveled: {self.distance} miles')
     # user inputs new value
     self.input_distance()
     # update completed order file
     if os.path.exists(self.file_list()['info']):
         self.save()
     # update in progress file
     elif os.path.exists(self.file_list()['distance']):
         from utility.file import write
         write(self.distance, self.file_list()['distance'])
 def change_fuel_economy(self):
     import os
     # get old value
     old_value = self.fuel_economy
     # display old value to user
     print(f'\nCurrent amount fuel economy: {old_value}')
     # user inputs new value
     self.input_fuel_economy()
     # update file if shift has been completed
     if os.path.exists(self.file_list()['info']):
         self.save()
     # update file if shift is in progress
     elif os.path.exists(self.file_list()['fuel_economy']):
         from utility.file import write
         write(self.fuel_economy, self.file_list()['fuel_economy'])
 def change_reason(self):
     import os
     # get old reason
     old_reason = self.reason
     # display old reason to user
     print(f'\nCurrent reason: {self.reason}')
     # user inputs new reason
     self.input_reason()
     # update file if extra stop has been completed
     if os.path.exists(self.file_list()['info']):
         self.save()
     # update file if extra stop is in progress
     elif os.path.exists(self.file_list()['reason']):
         from utility.file import write
         write(self.reason, self.file_list()['reason'])
 def change_vehicle_compensation(self):
     import os
     # get old value
     old_value = self.vehicle_compensation
     # display old value to user
     print(f'\nCurrent amount of vehicle compensation: {old_value}')
     # user inputs new value
     self.input_vehicle_compensation()
     # update file if shift has been completed
     if os.path.exists(self.file_list()['info']):
         self.save()
     # update file if shift is in progress
     elif os.path.exists(self.file_list()['vehicle_comp']):
         from utility.file import write
         write(self.vehicle_compensation, self.file_list()['vehicle_comp'])
 def change_distance(self):
     import os
     # get old value
     old_value = self.distance
     # display old value to user
     print(f'\nCurrent amount miles traveled: {old_value}')
     # user inputs new value
     self.input_distance()
     # update file if shift has been completed
     if os.path.exists(self.file_list()['info']):
         self.save()
     # update file if shift is in progress
     elif os.path.exists(self.file_list()['distance']):
         from utility.file import write
         write(self.distance, self.file_list()['distance'])
 def change_total_hours(self):
     import os
     # get old value
     old_value = self.total_hours
     # display old value to user
     print(f'\nCurrent amount of total hours: {old_value}')
     # user inputs new value
     self.input_total_hours()
     # update file if shift has been completed
     if os.path.exists(self.file_list()['info']):
         self.save()
     # update file if shift is in progress
     elif os.path.exists(self.file_list()['total_hours']):
         from utility.file import write
         write(self.total_hours, self.file_list()['total_hours'])
 def change_extra_tips_claimed(self):
     import os
     # get old value
     old_value = self.extra_tips_claimed
     # display old value to user
     print(f'\nCurrent amount of extra tips claimed: {old_value}')
     # user inputs new value
     self.input_extra_tips_claimed()
     # update file if shift has been completed
     if os.path.exists(self.file_list()['info']):
         self.save()
     # update file if shift is in progress
     elif os.path.exists(self.file_list()['extra_tips']):
         from utility.file import write
         write(self.extra_tips_claimed, self.file_list()['extra_tips'])
 def change_distance(self):
     import os
     # get old distance
     old_reason = self.distance
     # display old distance to user
     print(f'\nCurrent miles traveled: {self.distance}')
     # user inputs new distance
     self.input_distance()
     # update file if extra stop has been completed
     if os.path.exists(self.file_list()['info']):
         self.save()
     # update file if extra stop is in progress
     elif os.path.exists(self.file_list()['distance']):
         from utility.file import write
         write(self.distance, self.file_list()['distance'])
Exemple #19
0
def consolidate_split(split):
    from objects import Split
    if not isinstance(split, Split):
        raise TypeError

    from os import remove, rmdir
    from utility.file import write

    # get list of files
    file_list = split.file_list()
    # save all split data to one file
    write(split.csv(), file_list.pop('info'))
    directory = file_list.pop('directory')
    # delete directory and individual files
    for key in file_list:
        remove(file_list[key])
    rmdir(directory)
    def remove_id_from_file(self):
        from utility.file import Read, write
        from utility.utility import To_Datetime

        ids_file = self.file_list()['completed_ids']

        id_list = [
            To_Datetime(id).from_date() for id in Read(ids_file).comma()
        ]
        new_ids_list = [str(id.date()) for id in id_list if id != self.id]

        if len(new_ids_list) == 0:
            from os import remove
            remove(ids_file)
        elif len(new_ids_list) > 0:
            from utility.file import write
            write(','.join(new_ids_list), ids_file)
Exemple #21
0
def consolidate_shift(shift):
    from objects import Shift
    if not isinstance(shift, Shift):
        raise TypeError

    from os import remove
    from utility.file import save, write

    file_list = shift.file_list()
    # save data to one file
    write(shift.csv(), file_list.pop('info'))
    # remove file from dict to not delete
    file_list.pop('tips')
    file_list.pop('directory')
    completed_ids = file_list.pop('completed_ids')
    # delete indavidual files
    for key in file_list:
        remove(file_list[key])
    # create/update completed ids file
    save(shift.id, completed_ids, separator=',')
Exemple #22
0
def consolidate_delivery(delivery):
    from objects import Delivery
    if not isinstance(delivery, Delivery):
        # todo: need to write error message for this
        raise TypeError

    from os import remove
    from utility.file import save, write

    file_list = delivery.file_list()
    # save data to one file
    write(delivery.csv(), file_list.pop('info'))
    # remove file/directory to not be deleted
    directory = file_list.pop('directory')
    completed_ids = file_list.pop('completed_ids')
    # delete individual data files
    for key in file_list:
        remove(file_list[key])
    # create or update delivery ids file
    save(delivery.id, completed_ids, separator=',')
Exemple #23
0
    def overwrite_shift(self):
        from objects import Shift
        from os import mkdir
        from shutil import rmtree
        from utility.file import write
        from utility.utility import now

        self.shift = Shift(now().date())

        # delete directory that contains all files
        rmtree(self.shift.file_list()['directory'])
        # recreate the directory to store new files
        mkdir(self.shift.file_list()['directory'])
        # set and save start time
        self.shift.set_start_time()
        write(self.shift.start_time, self.shift.file_list()['start_time'])
        # remove id from completed ids file
        self.shift.remove_id_from_file()

        return self
Exemple #24
0
def consolidate_order(order):
    from objects import Order
    if not isinstance(order, Order):
        from resources.error_messages import\
            consolidate__order__wrong_parameter as error_messages
        raise TypeError(f'{error_messages} {type(order)}')

    from os import remove, rmdir
    from utility.file import save, write

    file_list = order.file_list()
    # save data to one file
    write(order.csv(), file_list.pop('info'))
    # remove file from list to not delete
    completed_ids = file_list.pop('completed_ids')
    directory = file_list.pop('directory')
    # delete individual data files
    for key in file_list:
        remove(file_list[key])
    rmdir(directory)
    # create or update order ids file
    save(order.id, completed_ids, separator=',')
Exemple #25
0
    def resume_shift(self):
        from objects import Shift
        from os import remove
        from utility.file import write
        from utility.utility import now

        self.shift = Shift(now().date())

        # load completed shift data
        self.shift.load_completed()
        # get shift start time
        start_time = self.shift.start_time
        # delete shift info file
        remove(self.shift.file_list()['info'])
        # save start time
        write(start_time, self.shift.file_list()['start_time'])
        # remove id from completed ids file
        self.shift.remove_id_from_file()
        # load current shift data
        self.shift.load_current()

        return self
Exemple #26
0
def track_order(order, test=False):
    from objects import Order
    if not isinstance(order, Order):
        raise TypeError

    from os import path
    from utility.file import write

    # get list of files for order input
    file_list = order.file_list()
    # make directory to store order files
    if not path.exists(file_list['directory']):
        from os import mkdir
        mkdir(file_list['directory'])
    # id
    if not path.exists(file_list['id']):
        if test is False:
            # input
            order.input_id()
        # save
        write(order.id, file_list['id'])
    # tip
    if not path.exists(file_list['tip']):
        if test is False:
            # input
            order.input_tip()
        # save
        write(order.tip.csv(), file_list['tip'])
    # distance
    if not path.exists(file_list['distance']):
        if test is False:
            # input
            order.input_distance()
        # save
        write(order.distance, file_list['distance'])
    # end time
    if not path.exists(file_list['end_time']):
        if test is False:
            # set
            order.set_end_time()
        # save
        write(order.end_time, file_list['end_time'])
    # inform order of its completion
    order.in_progress = False

    return order
    def change_id(self):
        # todo: need to write unittest for this
        import os
        from utility.file import Read, write

        # get old id
        original_order_id = self.id

        # remove file
        completed = False
        if os.path.exists(self.file_list()['info']):
            os.remove(self.file_list()['info'])
            completed = True
        elif os.path.exists(self.file_list()['id']):
            os.remove(self.file_list()['id'])

        # user input new id
        print(f'\nCurrent I.D. #:{self.id}')
        self.input_id()

        # update completed ids file
        if os.path.exists(self.file_list()['completed_ids']):
            # get order id(s) currently in file
            order_ids = Read(self.file_list()['completed_ids']).integer_list()
            # check if old order id is in list, if so remove it
            if original_order_id in order_ids:
                order_ids[order_ids.index(original_order_id)] = self.id
            # write updated list to completed ids file
            write(','.join([str(id) for id in order_ids]),
                  self.file_list()['completed_ids'])

        # rewrite file
        if completed is True:
            write(self.csv(), self.file_list()['info'])
        else:
            write(self.id, self.file_list()['id'])

        return original_order_id
Exemple #28
0
def end_delivery(delivery, test=False):
    from objects import Delivery
    if not isinstance(delivery, Delivery):
        raise TypeError

    from os import path
    from utility.file import write

    # get list of files and directory
    file_list = delivery.file_list()

    # distance
    if not path.exists(file_list['distance']):
        if test is False:
            # input
            delivery.input_distance()
        # save
        write(delivery.distance, file_list['distance'])

    # average speed
    if not path.exists(file_list['average_speed']):
        if test is False:
            # input
            delivery.input_average_speed()
        # save
        write(delivery.average_speed, file_list['average_speed'])

    # end time
    if not path.exists(file_list['end_time']):
        if test is False:
            # set
            delivery.set_end_time()
        # save
        write(delivery.end_time, file_list['end_time'])
    # inform delivery of its completion
    delivery.in_progress = False

    return delivery
 def save(self):
     from utility.file import write
     write(self.csv(), self.file_list()['info'])
 def result(self):
     # start time
     if self.user_selection == '1':
         self.shift.change_start_time()
     # end time
     elif self.user_selection == '2':
         self.shift.change_end_time()
     # total hours
     elif self.user_selection == '3':
         self.shift.change_total_hours()
     # distance
     elif self.user_selection == '4':
         self.shift.change_distance()
     # fuel economy
     elif self.user_selection == '5':
         self.shift.change_fuel_economy()
     # vehicle comp
     elif self.user_selection == '6':
         self.shift.change_vehicle_compensation()
     # device comp
     elif self.user_selection == '7':
         self.shift.change_device_compensation()
     # extra tips claimed
     elif self.user_selection == '8':
         self.shift.change_extra_tips_claimed()
     # delivery
     elif self.user_selection.lower() == 'd':
         delivery_option = Delivery_Option(self.shift)
         self.shift = delivery_option.shift
     # extra stop
     elif self.user_selection.lower() == 'e':
         self.shift = extra_stop_option(self.shift)
     # carry out tip
     elif self.user_selection.lower() == 'c':
         from processes.select import Select_Carry_Out_Tip
         from utility.file import write
         # user select a carry out tip to revise
         select_tip = Select_Carry_Out_Tip(self.shift)
         # get tip index
         tip_index = select_tip.get_index()
         if isinstance(tip_index, int):
             # user revises tip
             revise_tip = Revise_Tip(self.shift.carry_out_tips[tip_index])
             # update shift carry out tips list
             self.shift.carry_out_tips[tip_index] = revise_tip.tip
             # make string to update carry out tips file
             data = ''
             for tip in self.shift.carry_out_tips:
                 data += f'{tip.csv()}\n'
             # remove trailing newline
             if data[-1] == '\n':
                 data = data[:-1]
             # rewrite file with revised carry out tip
             write(data, self.shift.file_list()['tips'])
     # split
     elif self.user_selection.lower() == 's':
         revise_split = Revise_Split(self.shift.split)
         self.shift.split = revise_split.split
     # view
     elif self.user_selection.lower() == 'v':
         from processes.view import View_Shift
         print(View_Shift(self.shift).main())
     # back
     elif self.user_selection.lower() == 'b':
         self.loop_condition = False