Ejemplo n.º 1
0
    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))
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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))
Ejemplo n.º 4
0
    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))