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)
# 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]
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'
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
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
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)