Esempio n. 1
0
def execute_pull(api, conn, query, params, columns, batch_size=10):
    cursor = conn.cursor()

    if dbms == 'oracle':
        query, query_params = sch_client.prepare_query(query, params, ':0')
        cursor.execute(query, query_params)
    else:
        query, query_params = sch_client.prepare_query(query, params)
        cursor.execute(query, *query_params)

    def iterate():
        return cursor.fetchone()

    return sch_client.set_residents_batch(api, iterate, columns, params, batch_size)
Esempio n. 2
0
    # if APP_CODE not included in instance key, load default
    if "APP_ACTIVE_CODE" not in params:
        params["APP_ACTIVE_CODE"] = config["banner"]["ASSIGN_ACTIVE_CODE"]

    if "APP_INACTIVE_CODE" not in params:
        params["APP_INACTIVE_CODE"] = config["banner"]["APP_INACTIVE_CODE"]

    if "APP_CHANGE_CODE" not in params:
        params["APP_CHANGE_CODE"] = config["banner"]["APP_CHANGE_CODE"]

    # default ASSIGN_CODE and APP_CODE to 'active'
    params["ASSIGN_CODE"] = params["ASSIGN_ACTIVE_CODE"]
    params["APP_CODE"] = params["APP_ACTIVE_CODE"]

    # get room assignment and meal assignment start/end dates
    query, query_params = sch_client.prepare_query(room_assignment_dates_select, params, ":0")
    cursor.execute(query, query_params)
    dates_row = cursor.fetchone()
    if not dates_row:
        sch_client.printme("ERROR: No Room Assignment dates defined in Banner. Skipping Instance")
    else:
        room_start_date = dates_row[2]
        room_end_date = dates_row[3]
        sch_client.printme("Room Assignment Dates: ", " ")
        sch_client.printme(room_start_date.strftime("%Y-%m-%d"), " - ")
        sch_client.printme(room_end_date.strftime("%Y-%m-%d"))

        query, query_params = sch_client.prepare_query(meal_assignment_dates_select, params, ":0")
        cursor.execute(query, query_params)
        dates_row = cursor.fetchone()
        meal_start_date = dates_row[2]
Esempio n. 3
0
        params['id'] = resident['id'] if resident['id'][0] == 'P' else 'P' + resident['id']
        params['ACADEMIC_SESSION'] = config['powercampus']['push_params']['ACADEMIC_SESSION']
        params['DORM_CAMPUS'] = None
        params['DORM_PLAN'] = None
        params['DORM_BUILDING'] = None
        params['DORM_ROOM'] = None

        # Update Residency
        if resident['residency']:
            # standard update
            if verbose:
                sch_client.printme("Updating Residency for " + params['id'], ": ")
                sch_client.printme(json.dumps(resident['residency']))
            params.update(resident['residency'])
            params['RESIDENT_COMMUTER'] = 'R'
            query, query_params = sch_client.prepare_query(residency_update, params)
            res_update_count += cursor.execute(query, *query_params).rowcount
        else:
            query, query_params = sch_client.prepare_query(residency_select, params)
            cursor.execute(query, *query_params)
            row = cursor.fetchone()
            not_resident = not row or row.RESIDENT_COMMUTER != 'R' and not row.DORM_CAMPUS and not row.DORM_BUILDING and not row.DORM_ROOM
            known_room = row and (row.DORM_CAMPUS, row.DORM_BUILDING, row.DORM_ROOM) in dorm_room_set
            billcode_override = row and row.DORM_PLAN and not row.DORM_CAMPUS and not row.DORM_BUILDING and not row.DORM_ROOM

            # only erase residency for rooms controlled by SCH
            if not_resident or known_room or billcode_override:
                if verbose:
                    sch_client.printme("Setting null Residency for " + params['id'])

                params['RESIDENT_COMMUTER'] = 'C'
Esempio n. 4
0
def instance_exists(sess_cde):
    query, query_params = sch_client.prepare_query(cm_session_mstr_select, {"SESS_CDE": sess_cde})
    rowcount = len(cursor.execute(query, *query_params).fetchall())
    return rowcount > 0
Esempio n. 5
0
def resident_exists(id):
    query, query_params = sch_client.prepare_query(name_master_select, {"id": id})
    rowcount = len(cursor.execute(query, *query_params).fetchall())
    return rowcount > 0
Esempio n. 6
0
            halls[room['BLDG_LOC_CDE']][room['BLDG_CDE']]['capacity'] += room['capacity']
            halls[room['BLDG_LOC_CDE']][room['BLDG_CDE']]['num_residents'] += room['num_residents']

            params = copy(instance['key'])
            params.update(room)
            params['ROOM_TYPE'] = params['ROOM_TYPE'] if 'ROOM_TYPE' in params else None
            params['occupant_gender'] = params['gender'] if params['gender'] else 'I'
            params['num_vacancies'] = room['capacity'] - room['num_residents']
            if room['num_residents'] == room['capacity']:
                params['room_sts'] = 'F'
            elif room['num_residents'] == 0:
                params['room_sts'] = 'V'
            else:
                params['room_sts'] = 'P'

            query, query_params = sch_client.prepare_query(sess_room_master_update, params)
            rowcount = cursor.execute(query, *query_params).rowcount
            if rowcount > 0:
                sess_room_master_count_update += rowcount
            else:
                query, query_params = sch_client.prepare_query(sess_bldg_master_select, params)
                rowcount = len(cursor.execute(query, *query_params).fetchall())
                if rowcount == 0:  # building not in the session
                    # check to make sure it exist in master lookup
                    query, query_params = sch_client.prepare_query(building_master_select, params)
                    rowcount = len(cursor.execute(query, *query_params).fetchall())
                    if rowcount == 0:  # building not in master lookup table
                        building_master_missing.add(params['BLDG_CDE'])
                    else:  # insert building into session
                        query, query_params = sch_client.prepare_query(sess_bldg_master_insert, params)
                        cursor.execute(query, *query_params)