def test_all():
	year = '20142015'
	report_type = 'PL'
	game_type = '02'

	for x in range (750,1150):
		game_num = Operations.pad_game_num(x)
		game_info = GameHeader.harvest(year, game_num, report_type, game_type)
		game_personnel = Roster.harvest(year, game_num)
		game_summary = GameSummary.harvest(year, game_num, game_info, game_personnel)
	
		yield check_refs, game_personnel, game_summary
def harvest(year, game_num):
    """
	Extract roster information from a html file on the
	local machine and create database entries
	"""

    game_info = GameHeader.harvest(year, game_num, "RO", "02")

    tree = Operations.germinate_report_seed(year, game_num, "RO", "02")

    tables = tree.xpath("//table//table//table//table")

    away_roster = chop_ind_roster_branch(tables, "away", game_info, year)
    home_roster = chop_ind_roster_branch(tables, "home", game_info, year)

    away_coach, home_coach = chop_coach_branch(tables)
    away_coach.team = game_info.away_team
    home_coach.team = game_info.home_team

    referees, linesmen = chop_officials_branch(tables)

    return GamePersonnel(away_roster, home_roster, away_coach, home_coach, referees, linesmen)
def harvest(year, game_num):

	game_info = GameHeader.harvest (year, game_num, 'RO', '02')
	away_full_name = Operations.team_acronym_to_uppercase(
		game_info.away_team)
	home_full_name = Operations.team_acronym_to_uppercase(
		game_info.home_team)

	tree = Operations.germinate_report_seed (year, game_num, "ES", '02')

	tables = tree.xpath('//table[@class="tablewidth" and @align="center"]/tr/td/table[@width="100%"]')
	rows = tables[3].xpath('./tr')

	roster = []
	team_acronym = game_info.away_team
	
	for item in rows:
		if item.xpath('./td/text()')[0] == home_full_name:
			away_roster = roster
			roster = []
			team_acronym = game_info.home_team
		elif item.get('class') == 'evenColor' or\
				item.get('class') == 'oddColor':
			fields = item.xpath('./td/text()')
			for index, field in enumerate(fields):
				if field == u'\xa0':
					field = '0'

				if index == 0:
					number = field
				elif index == 1:
					position = field
				elif index == 2:
					name_raw = field.split(', ')
					first_name = name_raw[1]
					last_name = name_raw[0]
				elif index == 3:
					goals = field					
				elif index == 4:
					assists = field
				elif index == 5:
					points = field
				elif index == 6:
					plus_minus = field
				elif index == 7:
					num_penalties = field
				elif index == 8:
					pim = field
				elif index == 9:
					total_minutes = field
				elif index == 10:
					num_shifts = field
				elif index == 11:
					avg_shift_length = field
				elif index == 12:
					powerplay_minutes = field
				elif index == 13:
					shorthanded_minutes = field
				elif index == 14:
					evenstrength_minutes = field
				elif index == 15:
					shots = field
				elif index == 16:
					attempts_blocked = field
				elif index == 17:
					missed_shots = field
				elif index == 18:
					hits = field
				elif index == 19:
					give_aways = field
				elif index == 20:
					take_aways = field
				elif index == 21:
					blocked_shots = field
				elif index == 22:
					faceoff_wins = field
				elif index == 23:
					faceoff_losses = field
				elif index == 24:
					faceoff_percentage = field

			playerid = Operations.get_playerid(first_name, last_name, 
				team_acronym, year,	position)
			
			roster.append (ES_Player(team_acronym, number, position,
				first_name, last_name, goals, assists, points, plus_minus,
				num_penalties, pim, total_minutes, num_shifts,
				avg_shift_length, powerplay_minutes, shorthanded_minutes,
				evenstrength_minutes, shots, attempts_blocked, missed_shots,
				hits, give_aways, take_aways, blocked_shots, faceoff_wins,
				faceoff_losses, faceoff_percentage, playerid))

		home_roster = roster

	return away_roster, home_roster
		game_personnel.home_roster)
	pruned_events = []

	for index, event in enumerate(raw_events):

		pruned_event = prune_event(index, raw_events, game_personnel)
		pruned_events.append(pruned_event)
		#if pruned_event.event_type == 'HIT':
		#	print pruned_event
			
		
	return PlayByPlay(raw_events, pruned_events)

if __name__ == '__main__':
	
	year = '20142015'
	report_type = 'PL'
	game_type = '02'

	for game_num_raw in range (7,8):
		game_num = Operations.pad_game_num (game_num_raw)
		
		game_info = GameHeader.harvest(year, game_num, report_type, game_type)
		game_personnel = Roster.harvest (year, game_num)
		temp_pbp = harvest(year, game_num, report_type, game_type, game_info, game_personnel)

		print game_info
		for item in temp_pbp.pruned_events:
			if item.event_type == 'PENL':
				print item