def update_fuel(self, title, vehicle=None, record=None): ''' Create or update a fuel record ''' print('\n{} Fuel Record for {}:'.format(title, vehicle['reg_no'])) last = None # are we adding a new one or updating an old one? if (record == None): # adding new, so get the previous value. last = FN.last_fuel(vehicle) record = FN.frec.copy() # set reg for record record['vehicle_id'] = vehicle['vehicle_id'] record['date'] = FN.time_now() value = input('Date ({}):'.format(FN.to_date(record['date']))) if value: record['date'] = FN.to_seconds(value) value = input('Litres ({}):'.format(record['litres'])) if value: record['litres'] = float(value) value = input('Price per Litre ({}):'.format(record['ppl'])) if value: record['ppl'] = float(value) value = input('Cost ({}):'.format(record['cost'])) if value: record['cost'] = float(value) value = input('Odometer ({}):'.format(record['odo'])) if value: record['odo'] = int(value) calc_trip = record['trip'] if last: calc_trip = record['odo'] - last['odo'] trip = input('Trip ({0}):'.format(calc_trip)) if trip: record['trip'] = float(trip) else: record['trip'] = calc_trip value = input('Notes ({}):'.format(record['notes'])) if value: record['notes'] = value value = input('Fuel Type ({}):'.format(record['fuel_type'])) if value: record['fuel_type'] = value mpg = FN.update_fuel(vehicle, record) print('\nCalculated MPG: {:.2f}'.format(mpg))
def query(self, tbl, record): ''' Handler for data query. Uses form to order output ''' form = FN.forms[tbl] for element in form: label = string.capwords(element.replace('_', ' ')) if element.find('date') != -1: e = input('{1} ({0}):'.format(FN.to_date(record[element]), label)) else: e = input('{1} ({0}):'.format(record[element], label)) if e: if element.find('date') != -1: record[element] = FN.to_seconds(e) else: record[element] = e
def choose_service(self, vehicle): ''' Get vehicle record. Choose vehicle, display fuel by date (10 at a time?), on choice, get new values, save ''' recs = FN.get_service(vehicle) print('\nChoose Service Record to edit') while True: num=1 print('X) yyyy/mm/dd Item Cost') for r in recs: print('{0}) {1} {2} {3}'.format(num, FN.to_date(r['date']), r['item'], r['cost'])) num = num +1 print('0) Back') processed = False option = input('Service Record? :') # check option is numeric if option and option.isnumeric(): processed = True option = int(option) # go ahead if option in range, else, re-build menu if option == 0: return [False] elif (option > 0 and option <= len(recs)): self.update_service("Edit", vehicle, recs[option-1]) break else: processed = False if not processed: print('Invalid option [{0}]'.format(option))
def choose_fuel(self, vehicle): ''' Get vehicle record. Choose vehicle, display fuel by date (10 at a time?), on choice, call update_record ''' print('\nChoose Fuel Record to edit') # get date-sorted list of fuel for the selected vehicle recs = FN.get_fuel(vehicle) while True: num=1 print('X) yyyy/mm/dd Odometer Trip Litres PPL Cost Mpg Type Notes') for r in recs: print('{0}) {1} {2} {3} {4:.2f} {6:.2f} {7:.2f} {5:.2f} {8} {9}'.format(num, FN.to_date(r['date']), r['odo'], r['trip'], r['litres'], r['mpg'], r['ppl'], r['cost'], r['fuel_type'], r['notes'])) num = num +1 print('0) Back') processed = False option = input('Fuel Record? :') if option and option.isnumeric(): processed = True option = int(option) # go ahead if option in range, else, re-build menu if option == 0: return [False] elif (option > 0 and option <= len(recs)): self.update_fuel('Edit', vehicle, recs[option-1]) break else: processed = False if not processed: print ('Invalid option [{0}]'.format(option))