Exemplo n.º 1
0
def update_configs(all_analyses, dbset):
    '''
    Syncs configs from blip server with database and returns configs to pull 
    data from. 
    :param all_analyses:
        List of blip configurations
    :param dbset:
        Dictionary to connect to PostgreSQL database
    '''

    db = DB(**dbset)
    db.begin()
    db.query('''TRUNCATE bluetooth.all_analyses_day_old;
    INSERT INTO bluetooth.all_analyses_day_old SELECT * FROM bluetooth.all_analyses;'''
             )
    db.commit()
    analyses_pull_data = {}
    for report in all_analyses:
        report.outcomes = [outcome.__json__() for outcome in report.outcomes]
        report.routePoints = [
            route_point.__json__() for route_point in report.routePoints
        ]
        row = dict(device_class_set_name=report.deviceClassSetName,
                   analysis_id=report.id,
                   minimum_point_completed=db.encode_json(
                       report.minimumPointCompleted.__json__()),
                   outcomes=report.outcomes,
                   report_id=report.reportId,
                   report_name=report.reportName,
                   route_id=report.routeId,
                   route_name=report.routeName,
                   route_points=report.routePoints)
        #If upsert fails, log error and continue, don't add analysis to analyses to pull
        try:
            upserted = db.upsert('bluetooth.all_analyses',
                                 row,
                                 pull_data='included.pull_data')
            analyses_pull_data[upserted['analysis_id']] = {
                'pull_data': upserted['pull_data'],
                'report_name': upserted['report_name']
            }
        except IntegrityError as err:
            LOGGER.error(err)

    db.close()

    analyses_to_pull = {
        analysis_id: analysis
        for (analysis_id, analysis) in analyses_pull_data.items()
        if analysis['pull_data']
    }
    return analyses_to_pull
Exemplo n.º 2
0
    elif None in exist[0][0:4]:
        #update
        venue["id"] = exist[0][2]
        row["venue_id"] = exist[0][2]
        venue["venue_name"] = row["venue_name"]
        venue["venue_add_comp"] = row["venue_add_comp"]
        if row["venue_add_comp"] is not None:
            (add, lat, lon) = geocode(FormatAddress(row["venue_add_comp"]))
        else:
            add = None
            lat = None
            lon = None
        venue["venue_address"] = add
        venue["lat"] = lat
        venue["lon"] = lon
        db.upsert('city.venues', venue)
        print('UPSERT VENUE', row["venue_name"])

    else:
        # do nothing
        row["venue_id"] = exist[0][2]

# Update ODVenues Table
    venue = {}
    exist = db.query("SELECT * FROM city.od_venues where venue_address = \'" +
                     row["venue_add_comp"] + "\'").getresult()
    if exist == []:
        exist = db.query("SELECT * FROM city.od_venues where venue_name = \'" +
                         row["venue_name"] + "\'").getresult()
    if exist == []:
        ODID = ODID + 1