Exemplo n.º 1
0
def GetUserBySessionId(session_id):
    db_req = ("TIME == '" + session_id + "'")
    try:
        rows = db_helper.QueryTable(TABLE_NAME, db_req)
    except db_helper.DBException as e:
        return None
    if len(rows) > 1:
        error = 'Users DB in bad shape - %d users named: ' % len(
            rows) + username
        logging.error(error)
        raise UserException(error)
    elif len(rows) == 1:
        return rows[0]

    return None
Exemplo n.º 2
0
def GetFluInfo():
    # For flu info:
    # RES0: week number in the year
    # VALUE: value of data
    # MIN: min value diff in year
    # MAX: max value diff in year
    # RES1: max value in year
    schema_map = db_helper.GetSchemaMap()

    date = datetime.datetime.now()
    week_num = date.isocalendar()[1]
    last_week_num = (week_num + 51) % 52

    response = []
    week_nums = [week_num, last_week_num]
    db_names = [
        'flu_sick_people', 'flu_sick_hospitals', 'flu_sick_work_places'
    ]
    for db_name in db_names:
        week_data = []
        for week in week_nums:
            db_req = 'RES0 = ' + str(week)
            rows = db_helper.QueryTable(db_name, db_req)
            if not len(rows) == 1:
                logging.error(db_name +
                              ' DB in bad state - returned %d for week ' %
                              len(rows) + str(week))
                return UNKNOWN_THREE

            value = rows[0][schema_map['VALUE']]
            week_data.append(value)
            max_value = float(rows[0][schema_map['RES1']])
            min_diff = rows[0][schema_map['MIN']]
            max_diff = rows[0][schema_map['MAX']]
            week_maxes = (max_value, min_diff, max_diff)

        week_quality = 10 * (1 - week_data[0] / week_maxes[0])
        week_percent = 100 * ((week_data[0] / week_data[1]) - 1)

        week_diff = week_data[0] - week_data[1]
        week_diff_quality = 10 * (week_maxes[2] - week_diff) / (week_maxes[2] -
                                                                week_maxes[1])

        response.append((week_quality, week_diff_quality, week_percent))

    return response
Exemplo n.º 3
0
def FindClosest(table_name, pos_x, pos_y, min_results, max_results, block_size,
                retries, block_growth):
    # Try issuing queries with increasing block_size until a min number
    # of results are found or we exhaust our tries.
    for _ in range(retries):
        db_req = (
            'POS_X >= %f AND POS_X <= %f AND POS_Y >= %f AND POS_Y <= %f' %
            (pos_x - block_size, pos_x + block_size, pos_y - block_size,
             pos_y + block_size))
        try:
            rows = db_helper.QueryTable(table_name, db_req)
        except db_helper.DBException as e:
            raise HelperException(str(e))
        else:
            if len(rows) >= min_results:
                break
        block_size = block_size * block_growth

    return SortByDistance(rows, pos_x, pos_y, max_results)
Exemplo n.º 4
0
def FindCloseClinics(pos_x, pos_y, min_results, max_results):
    # Try issuing queries with increasing block_size until a min number
    # of results are found or we exhaust our tries.
    block_size = constants.INIT_BLOCK_SIZE
    for _ in range(constants.MAX_POS_QUERY_RETRIES):
        db_req = (
            'POS_X >= %f AND POS_X <= %f AND POS_Y >= %f AND POS_Y <= %f' %
            (pos_x - block_size, pos_x + block_size, pos_y - block_size,
             pos_y + block_size))
        try:
            rows = db_helper.QueryTable('clinics', db_req)
        except db_helper.DBException as e:
            raise HelperException(str(e))
        else:
            if len(rows) >= min_results:
                break
        block_size = block_size * constants.BLOCK_SIZE_GROW_FACTOR

    return SortByDistance(rows, pos_x, pos_y, max_results)