def formfields2taskargs(self, fields, db_url):
        schema = Schema()
        taskargs = schema.deserialize(fields)

        start = taskargs['start']
        end = taskargs['end']
        tracker_id = taskargs['tracker_id']
        validateRange(getGPSCount(db_url, tracker_id, start, end), 0, self.MAX_FIX_COUNT)

        taskargs['db_url'] = db_url
        return taskargs
    def formfields2taskargs(self, fields, db_url):
        schema = Schema()
        taskargs = schema.deserialize(fields)

        trackers = taskargs['trackers']

        # Test if selection will give results
        total_gps_count = 0
        for tracker in trackers:
            gps_count = getGPSCount(db_url, tracker['id'], taskargs['start'], taskargs['end'])
            total_gps_count += gps_count
            validateRange(gps_count, 0, self.MAX_FIX_COUNT, tracker['id'])
            tracker['color'] = self.convert_colors(tracker)
        validateRange(total_gps_count, 0, self.MAX_FIX_TOTAL_COUNT)

        taskargs['db_url'] = db_url
        return taskargs
    def formfields2taskargs(self, fields, db_url):
        # form has transparency and kml requires opacity aka alpha
        fields['alpha'] = abs(100 - fields['transparency'])
        del(fields['transparency'])

        schema = Schema()
        taskargs = schema.deserialize(fields)

        # Test if selection will give results
        total_gps_count = 0
        for tracker in taskargs['trackers']:
            gps_count = getGPSCount(db_url,
                                    tracker['id'],
                                    taskargs['start'],
                                    taskargs['end'],
                                    )
            total_gps_count += gps_count
            validateRange(gps_count, 0, self.MAX_FIX_COUNT, tracker['id'])
        validateRange(total_gps_count, 0, self.MAX_FIX_TOTAL_COUNT)

        taskargs['db_url'] = db_url
        return taskargs