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
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
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
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
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'])
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)
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=',')
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=',')
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
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=',')
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
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
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