Example #1
0
def newgame(request):
	if request.method != 'POST':
		teams = Team.objects.all()
		context = {'teams':teams}
		return render (request , 'sbleague/newgame.html',context)

	else :

		teams = Team.objects.all()

		home_teamID = request.POST.get("hometeamID", "")
		away_teamID = request.POST.get("awayteamID", "")
		
		hometeam = Team.objects.get(pk=home_teamID)
		awayteam = Team.objects.get(pk=away_teamID)

		homeplayer = Member.objects.filter(team = home_teamID).order_by("number")
		awayplayer = Member.objects.filter(team = away_teamID).order_by("number")

		date = request.POST.get("date", "")
		location = request.POST.get("location", "")		
		game_id  = request.POST.get("game_id", "")



#############################################################################
		away_record = request.POST.get("away_rd", "")
		home_record = request.POST.get("home_rd", "")

		record = None
		record_err = ""
		# ===== record parser
		if( len(away_record) and len(home_record) ):
			awayteam_name = awayteam.name.encode('utf8')[0:6]
			hometeam_name = hometeam.name.encode('utf8')[0:6]
			away_table = text_to_table(away_record.encode('utf8'))
			home_table = text_to_table(home_record.encode('utf8'))
			record, record_err = parse_game_record(awayteam_name, None, away_table, hometeam_name, None, home_table)
			
			record.game_type    = "台大慢壘聯盟"
			record.date         = date
			record.location     = location
			record.game_id      = game_id
			record.away.raw_record = away_record.encode('utf8')
			record.home.raw_record = home_record.encode('utf8')
		else:
			if( len(away_record) == 0 ):
				record_err = "Away 沒有記錄"
			else:
				record_err = "Home 沒有記錄"

#############################################################################
		


		if( date == u'' ):
			err_message = "請輸入日期"
			context = {'teams': teams, 'awayteam': awayteam, 'hometeam': hometeam, 'date': date, 'location': location, 'game_id': game_id, 'away_record': away_record, 'home_record': home_record, 'warning': err_message}
			
			return render(request, 'sbleague/newgame.html', context)
		

		if( game_id == u'' ):
			err_message = "請輸入場次編號"
			context = {'teams': teams, 'awayteam': awayteam, 'hometeam': hometeam, 'date': date, 'location': location, 'game_id': game_id, 'away_record': away_record, 'home_record': home_record, 'warning': err_message}

			return render(request, 'sbleague/newgame.html', context)


		game_exist = True
		try:
			new = Game.objects.get(gameID=game_id)

		except Game.DoesNotExist: # --- add new game

			game_exist = False

			max_batter_nums  = 25
			max_pitcher_nums = 5

			if( record != None and record_err == ""): 
				# --- append batter_num to 25 and pitcher_num to 5
				if( record.away.nBatters < max_batter_nums ):
					for i in range(max_batter_nums-record.away.nBatters):
						record.away.batters.append(rdBatter())

				if( record.home.nBatters < max_batter_nums ):
					for i in range(max_batter_nums-record.home.nBatters):
						record.home.batters.append(rdBatter())

				if( record.away.nPitchers < max_pitcher_nums ):
					for i in range(max_pitcher_nums-record.away.nPitchers):
						record.away.pitchers.append(rdPitcher())

				if( record.home.nPitchers < max_pitcher_nums ):
					for i in range(max_pitcher_nums-record.home.nPitchers):
						record.home.pitchers.append(rdPitcher())

		if( game_exist ):
			err_message = "重複的場次編號"
			context = {'teams': teams, 'awayteam': awayteam, 'hometeam': hometeam, 'date': date, 'location': location, 'game_id': game_id, 'away_record': away_record, 'home_record': home_record, 'warning': err_message}
			
			return render(request, 'sbleague/newgame.html', context)


		# === record error
		if( record_err != "" ):	
			err_message = record_err
			context = {'teams': teams, 'awayteam': awayteam, 'hometeam': hometeam, 'date': date, 'location': location, 'game_id': game_id, 'away_record': away_record, 'home_record': home_record, 'warning': err_message}
			
			return render(request, 'sbleague/newgame.html', context)

		# === success add new game
		if 'send' in request.POST: # --- send data
			context = {'hometeam': hometeam, 'awayteam': awayteam, 'homeplayer': homeplayer ,'awayplayer': awayplayer, 'date': date, 'location': location , 'game_id': game_id, 'home_away': range(2), 'max_batter_nums': max_batter_nums, 'max_pitcher_nums': max_pitcher_nums, 'record': record}

			return render(request, 'sbleague/newgame_detail.html', context)

		elif 'download' in request.POST:

			filename = '%d.txt' %int(game_id)
			filepath = 'sbleague/static/txt/%s' %filename
			with open(filepath, 'w') as f:
				f.write(record.post_ptt)
				print "save %s" %filepath

			response = HttpResponse(FileWrapper( file(filepath) ), content_type=mimetypes.guess_type(filepath)[0] )
			response['Content-Disposition'] = 'attachment; filename=%s' %filename
			response['Content-Length'] = os.path.getsize(filepath)
			
			return response

		else: # --- preview
			err_message = "preview"
			context = {'teams': teams, 'awayteam': awayteam, 'hometeam': hometeam, 'date': date, 'location': location, 'game_id': game_id, 'away_record': away_record, 'home_record': home_record, 'warning': err_message, 'record': record, 'preview': True}
			
			return render(request, 'sbleague/newgame.html', context)
Example #2
0
def newgame(request):
    if request.method != 'POST':
        teams = Team.objects.all()
        context = {'teams': teams}
        return render(request, 'sbleague/newgame.html', context)

    else:

        teams = Team.objects.all()

        home_teamID = request.POST.get("hometeamID", "")
        away_teamID = request.POST.get("awayteamID", "")

        hometeam = Team.objects.get(pk=home_teamID)
        awayteam = Team.objects.get(pk=away_teamID)

        homeplayer = Member.objects.filter(team=home_teamID).order_by("number")
        awayplayer = Member.objects.filter(team=away_teamID).order_by("number")

        date = request.POST.get("date", "")
        location = request.POST.get("location", "")
        game_id = request.POST.get("game_id", "")

        #############################################################################
        away_record = request.POST.get("away_rd", "")
        home_record = request.POST.get("home_rd", "")

        record = None
        record_err = ""
        # ===== record parser
        if (len(away_record) and len(home_record)):
            awayteam_name = awayteam.name.encode('utf8')[0:6]
            hometeam_name = hometeam.name.encode('utf8')[0:6]
            away_table = text_to_table(away_record.encode('utf8'))
            home_table = text_to_table(home_record.encode('utf8'))
            record, record_err = parse_game_record(awayteam_name, None,
                                                   away_table, hometeam_name,
                                                   None, home_table)

            record.game_type = "台大慢壘聯盟"
            record.date = date
            record.location = location
            record.game_id = game_id
            record.away.raw_record = away_record.encode('utf8')
            record.home.raw_record = home_record.encode('utf8')
        else:
            if (len(away_record) == 0):
                record_err = "Away 沒有記錄"
            else:
                record_err = "Home 沒有記錄"


#############################################################################

        if (date == u''):
            err_message = "請輸入日期"
            context = {
                'teams': teams,
                'awayteam': awayteam,
                'hometeam': hometeam,
                'date': date,
                'location': location,
                'game_id': game_id,
                'away_record': away_record,
                'home_record': home_record,
                'warning': err_message
            }

            return render(request, 'sbleague/newgame.html', context)

        if (game_id == u''):
            err_message = "請輸入場次編號"
            context = {
                'teams': teams,
                'awayteam': awayteam,
                'hometeam': hometeam,
                'date': date,
                'location': location,
                'game_id': game_id,
                'away_record': away_record,
                'home_record': home_record,
                'warning': err_message
            }

            return render(request, 'sbleague/newgame.html', context)

        game_exist = True
        try:
            new = Game.objects.get(gameID=game_id)

        except Game.DoesNotExist:  # --- add new game

            game_exist = False

            max_batter_nums = 25
            max_pitcher_nums = 5

            if (record != None and record_err == ""):
                # --- append batter_num to 25 and pitcher_num to 5
                if (record.away.nBatters < max_batter_nums):
                    for i in range(max_batter_nums - record.away.nBatters):
                        record.away.batters.append(rdBatter())

                if (record.home.nBatters < max_batter_nums):
                    for i in range(max_batter_nums - record.home.nBatters):
                        record.home.batters.append(rdBatter())

                if (record.away.nPitchers < max_pitcher_nums):
                    for i in range(max_pitcher_nums - record.away.nPitchers):
                        record.away.pitchers.append(rdPitcher())

                if (record.home.nPitchers < max_pitcher_nums):
                    for i in range(max_pitcher_nums - record.home.nPitchers):
                        record.home.pitchers.append(rdPitcher())

        if (game_exist):
            err_message = "重複的場次編號"
            context = {
                'teams': teams,
                'awayteam': awayteam,
                'hometeam': hometeam,
                'date': date,
                'location': location,
                'game_id': game_id,
                'away_record': away_record,
                'home_record': home_record,
                'warning': err_message
            }

            return render(request, 'sbleague/newgame.html', context)

        # === record error
        if (record_err != ""):
            err_message = record_err
            context = {
                'teams': teams,
                'awayteam': awayteam,
                'hometeam': hometeam,
                'date': date,
                'location': location,
                'game_id': game_id,
                'away_record': away_record,
                'home_record': home_record,
                'warning': err_message
            }

            return render(request, 'sbleague/newgame.html', context)

        # === success add new game
        if 'send' in request.POST:  # --- send data
            context = {
                'hometeam': hometeam,
                'awayteam': awayteam,
                'homeplayer': homeplayer,
                'awayplayer': awayplayer,
                'date': date,
                'location': location,
                'game_id': game_id,
                'home_away': range(2),
                'max_batter_nums': max_batter_nums,
                'max_pitcher_nums': max_pitcher_nums,
                'record': record
            }

            return render(request, 'sbleague/newgame_detail.html', context)

        elif 'download' in request.POST:

            filename = '%d.txt' % int(game_id)
            filepath = 'sbleague/static/txt/%s' % filename
            with open(filepath, 'w') as f:
                f.write(record.post_ptt)
                print "save %s" % filepath

            response = HttpResponse(
                FileWrapper(file(filepath)),
                content_type=mimetypes.guess_type(filepath)[0])
            response[
                'Content-Disposition'] = 'attachment; filename=%s' % filename
            response['Content-Length'] = os.path.getsize(filepath)

            return response

        else:  # --- preview
            err_message = "preview"
            context = {
                'teams': teams,
                'awayteam': awayteam,
                'hometeam': hometeam,
                'date': date,
                'location': location,
                'game_id': game_id,
                'away_record': away_record,
                'home_record': home_record,
                'warning': err_message,
                'record': record,
                'preview': True
            }

            return render(request, 'sbleague/newgame.html', context)
Example #3
0
def index():

    game_type   = ""
    date        = None
    game_id     = ""
    location    = ""
    away_team_name  = ""
    away_scores     = []
    away_table      = []
    away_record     = ""
    home_team_name  = ""
    home_scores     = []
    home_table      = []
    home_record     = ""

    warning = ""
    load_file  = False
    parse_game = False
        
    if( "reset" in request.form ):
        return render_template("index.html", game=Game(), id='', away_record='', home_record='', warning='')

    if( request.method == "POST" ):
    
        # parse from upload file
        if( 'upload_file' in request.files ):
            f = request.files['upload_file']
            
            if( f ):
                load_file = True
                if is_allowed_file(f.filename):
                    filepath = os.path.join(app.config["UPLOAD_FOLDER"], f.filename)
                    f.save(filepath)
                    print "save %s\n" %filepath
                    warning = 'upload %s' %f.filename
        
                
                    game_type, date, game_id, location, \
                    away_team_name, away_scores, away_table, \
                    home_team_name, home_scores, home_table = load_record_file(filepath)
                    
                    away_record = table_to_text(away_table)
                    home_record = table_to_text(home_table)
                    parse_game = True
                else:
                    warning = 'Not allowed file extension: %s' %os.path.splitext(f.filename)[-1]
             
        # parse from web
        if( not load_file ):
            game_type   = request.form["game_type"].encode('utf8')
            date        = request.form["date"]
            location    = request.form["location"].encode('utf8')
            game_id     = request.form["game_id"].encode('utf8')
            away_record = request.form["away_record"]
            home_record = request.form["home_record"]
        
            (away_team_name, away_scores, away_table) = gather_team_info(request, "away", away_record.encode('utf8'))
            (home_team_name, home_scores, home_table) = gather_team_info(request, "home", home_record.encode('utf8'))
    
            parse_game = True
    
    if( parse_game ):
        print "parse_game" 
        game, err = parse_game_record(away_team_name, away_scores, away_table, \
                                      home_team_name, home_scores, home_table)
        
        game.game_type  = game_type
        game.date       = date
        game.location   = location
        game.game_id    = game_id
        game.away.raw_record = away_record.encode('utf8')
        game.home.raw_record = home_record.encode('utf8')

        if( err == "" ):
            
            filename = '%s-%s-%s' %(game.game_id, away_team_name, home_team_name)

            # save record file
            filepath = 'rd/%s.rd' %filename
            game.save_game(filepath)
            
            # save output file (PTT format + statistic results)        
            filepath = 'rd/%s.txt' %filename
      
            output = ""
            output += "%s %s (%s)\n\n" %(str(date), game_type, location)
            output += game.post_ptt
            output += "\n"
            output += game.post_db

            with open(filepath, 'w') as f:
                f.write(output)
                print "Save %s" %filepath

            return render_template("index.html", game=game, id=game_id, away_record=away_record, home_record=home_record, warning=err, preview=True)

        else:
            return render_template("index.html", game=game, id=game_id, away_record=away_record, home_record=home_record, warning=err)

    

    if( 'download_ptt' in request.form and err == "" ):
        print "download ptt"
        filepath = 'rd/%s.txt' %filename
        with open(filepath, 'r') as f:
            output = f.read()
            response = make_response(output)
            response.headers['Content-Type'] = mimetypes.guess_type(filepath)[0]
            response.headers['Content-Disposition'] = 'attachment; filename=%s.txt' %filename
            response.headers['Content-Length'] = os.path.getsize(filepath)
            return response


    if( 'download_rd' in request.form and err == "" ):
        print "download_rd"
        filepath = 'rd/%s.rd' %filename
        with open(filepath, 'r') as f: 
            output = f.read()
            response = make_response(output)
            response.headers['Content-Type'] = mimetypes.guess_type(filepath)[0]
            response.headers['Content-Disposition'] = 'attachment; filename=%s.rd' %filename
            response.headers['Content-Length'] = os.path.getsize(filepath)
            return response


    return render_template("index.html", game=Game(), id='', away_record='', home_record='', warning=warning)
Example #4
0
def edit_game(request, game_id):

    game = Game.objects.get(id=game_id)
    league_list = League.objects.all()
    member_list = Member.objects.all()
    batting_query = Batting.objects.filter(game=game)
    pitching_query = Pitching.objects.filter(game=game)

    if request.method != "POST":
        game.date = unicode(game.date)
        away_name = game.away_name.encode('utf8')
        home_name = game.home_name.encode('utf8')
        game.away_scores = CommaSeparatedString_to_IntegerArray(
            game.away_scores)
        game.home_scores = CommaSeparatedString_to_IntegerArray(
            game.home_scores)
        message = ""
        warning = ""

        record_table = text_to_table(game.record.encode('utf8'))

        if (away_name.upper() == 'RB'):
            away_table = record_table
            home_table = []
        else:
            away_table = []
            home_table = record_table

        game_record, warning = parse_game_record(away_name, game.away_scores, away_table, \
                                                  home_name, game.home_scores, home_table)

        if (away_name.upper() == 'RB'):
            team = game_record.away
        else:
            team = game_record.home

        batting_list = []
        for batting in batting_query:
            batting_list.append(batting)

        pitching_list = []
        for pitching in pitching_query:
            pitching_list.append(pitching)

        # add rows for changing pitchers
        N = len(pitching_list)
        for i in range(5 - N):
            pitching_list.append(Pitching())

        context = {
            'league_list': league_list,
            'game': game,
            'warning': warning,
            'message': message,
            'game_record': game_record,
            'team': team,
            'member_list': member_list,
            'batting_list': batting_list,
            'pitching_list': pitching_list
        }

        return render(request, 'team/edit_game.html', context)

    else:
        # POST

        league_id = request.POST["league_id"]
        game.league = League.objects.get(id=league_id)
        game.date = request.POST["date"]
        game.location = request.POST["location"]
        game.record = request.POST["record_text"]
        game.away_name = request.POST["away_name"]
        game.home_name = request.POST["home_name"]
        game.away_scores = gather_team_scores_from_web(request, 'away')
        game.home_scores = gather_team_scores_from_web(request, 'home')

        print game.home_scores
        message = ""
        warning = ""
        game_record = None
        team = None

        if 'add-new-league-btn' in request.POST:
            print("add new league!")
            league_name = request.POST["new-league-name"]

            if league_name != None:

                league = League.objects.filter(name=league_name)
                if (league.exists()):
                    warning = "League name %s already exists." % league_name
                else:
                    league = League(name=league_name)
                    league.save()
                    message = 'Add new league: %s' % league_name

            league_list = League.objects.all()

        if 'add-new-member-btn' in request.POST:
            print("add new member!")
            member_name = request.POST["new-member-name"]
            member_number = int(request.POST["new-member-number"])

            if member_name != None:

                member = Member.objects.filter(name=member_name)
                if (member.exists()):
                    warning = "Member %s already exists." % member_name
                else:
                    member = Member(name=member_name, number=member_number)
                    member.save()
                    message = 'Add new member: %s(%d)' % (member_name,
                                                          member_number)

            member_list = Member.objects.all()

        if ('preview-btn' in request.POST) or ('save-game-btn'
                                               in request.POST):

            game.league = League.objects.get(id=league_id)
            record_table = text_to_table(game.record.encode('utf8'))

            away_name = game.away_name.encode('utf8')
            home_name = game.home_name.encode('utf8')

            if (away_name.upper() == 'RB'):
                away_table = record_table
                home_table = []
            else:
                away_table = []
                home_table = record_table

            game_record, warning = parse_game_record(away_name, game.away_scores, away_table, \
                                                      home_name, game.home_scores, home_table)

            game.away_R = game_record.away.R
            game.away_H = game_record.away.H
            game.away_E = game_record.away.E
            game.home_R = game_record.home.R
            game.home_H = game_record.home.H
            game.home_E = game_record.home.E

            if (warning == ""):
                message = "Preview record table!"

                game_record, team = extract_single_team_data(game_record, 'RB')

                batting_list = []
                for batter in team.batters:
                    batting = Batting()
                    for play in batting_query:
                        if batter.name.decode('utf8') == play.member.name:
                            batting = play
                            break

                    batting.member = Member.objects.get(
                        name=batter.name.decode('utf8'))
                    batting.game = game
                    batting.order = batter.order
                    batting.pa = batter.PA
                    batting.single = batter.B1
                    batting.double = batter.B2
                    batting.triple = batter.B3
                    batting.hr = batter.HR
                    batting.rbi = batter.RBI
                    batting.run = batter.RUN
                    batting.bb = batter.BB
                    batting.k = batter.K
                    batting.sf = batter.SF
                    batting.field = batter.pos

                    batting_list.append(batting)

                # DO NOT modify pitching query with team.pitchers
                pitching_list = []
                for pitching in pitching_query:
                    pitching_list.append(pitching)

                # add rows for changing pitchers
                N = len(pitching_list)
                for i in range(5 - N):
                    pitching_list.append(Pitching())

                if 'save-game-btn' in request.POST:

                    # create and save new Game object
                    game.away_scores = IntegerArray_to_CommaSeparatedString(
                        game.away_scores)
                    game.home_scores = IntegerArray_to_CommaSeparatedString(
                        game.home_scores)
                    game.save()

                    nBatter = len(batting_list)
                    for i in range(nBatter):
                        batting = batting_list[i]
                        member_id = int(
                            request.POST.get("batting_%d_id" % (i + 1), ""))

                        if (member_id != 0):
                            batting.member = Member.objects.get(id=member_id)
                            batting.game = game
                            batting.save()

                    nPitcher = len(pitching_list)
                    for i in range(nPitcher):
                        pitching = pitching_list[i]
                        member_id = int(
                            request.POST.get("pitching_%d_id" % (i + 1), ""))

                        if (member_id != 0):
                            pitching.member = Member.objects.get(id=member_id)
                            pitching.game = game
                            pitching.outs = int(
                                request.POST.get("pitching_%d_outs" % (i + 1),
                                                 ""))
                            pitching.pa = int(
                                request.POST.get("pitching_%d_pa" % (i + 1),
                                                 ""))
                            pitching.hit = int(
                                request.POST.get("pitching_%d_hit" % (i + 1),
                                                 ""))
                            pitching.hr = int(
                                request.POST.get("pitching_%d_hr" % (i + 1),
                                                 ""))
                            pitching.bb = int(
                                request.POST.get("pitching_%d_bb" % (i + 1),
                                                 ""))
                            pitching.k = int(
                                request.POST.get("pitching_%d_k" % (i + 1),
                                                 ""))
                            pitching.run = int(
                                request.POST.get("pitching_%d_run" % (i + 1),
                                                 ""))
                            pitching.er = int(
                                request.POST.get("pitching_%d_er" % (i + 1),
                                                 ""))
                            pitching.go = int(
                                request.POST.get("pitching_%d_go" % (i + 1),
                                                 ""))
                            pitching.fo = int(
                                request.POST.get("pitching_%d_fo" % (i + 1),
                                                 ""))

                            win = request.POST.get("pitching_%d_win" % (i + 1),
                                                   "")
                            lose = request.POST.get(
                                "pitching_%d_lose" % (i + 1), "")

                            if (win != ''):
                                pitching.win = 1
                            else:
                                pitching.win = 0

                            if (lose != ''):
                                pitching.lose = 1
                            else:
                                pitching.lose = 0

                            pitching.save()

                    return redirect("/game/" + str(game.id))

        context = {
            'league_list': league_list,
            'game': game,
            'warning': warning,
            'message': message,
            'game_record': game_record,
            'team': team,
            'member_list': member_list,
            'batting_list': batting_list,
            'pitching_list': pitching_list
        }

        return render(request, 'team/edit_game.html', context)
Example #5
0
def add_game(request):

    league_list = League.objects.all()
    member_list = Member.objects.all()
    game = Game()
    batting_list = []
    pitching_list = []

    if request.method != "POST":
        game.date = None
        game.location = ""
        game.away_name = ""
        game.away_scores = [0] * 7
        game.home_name = ""
        game.home_scores = [0] * 7
        game.record = ""
        message = ""
        warning = ""

        context = {
            'league_list': league_list,
            'game': game,
            'warning': warning,
            'message': message
        }

        return render(request, 'team/add_game.html', context)

    else:

        league_id = request.POST["league_id"]
        game.league = League.objects.get(id=league_id)
        game.date = request.POST["date"]
        game.location = request.POST["location"]
        game.record = request.POST["record_text"]
        game.away_name = request.POST["away_name"]
        game.home_name = request.POST["home_name"]
        game.away_scores = gather_team_scores_from_web(request, 'away')
        game.home_scores = gather_team_scores_from_web(request, 'home')

        message = ""
        warning = ""
        game_record = None
        team = None

        if 'add-new-league-btn' in request.POST:
            print("add new league!")
            league_name = request.POST["new-league-name"]

            if league_name != None and league_name != "":

                league = League.objects.filter(name=league_name)
                if (league.exists()):
                    warning = "League name %s already exists." % league_name
                else:
                    league = League(name=league_name)
                    league.save()
                    message = 'Add new league: %s' % league_name

            league_list = League.objects.all()

        if 'add-new-member-btn' in request.POST:
            print("add new member!")
            member_name = request.POST["new-member-name"]
            member_number = int(request.POST["new-member-number"])

            if member_name != None:

                member = Member.objects.filter(name=member_name)
                if (member.exists()):
                    warning = "Member %s already exists." % member_name
                else:
                    member = Member(name=member_name, number=member_number)
                    member.save()
                    message = 'Add new member: %s(%d)' % (member_name,
                                                          member_number)

            member_list = Member.objects.all()

        if ('preview-btn' in request.POST) or ('save-game-btn'
                                               in request.POST):

            game.league = League.objects.get(id=league_id)
            record_table = text_to_table(game.record.encode('utf8'))

            away_name = game.away_name.encode('utf8')
            home_name = game.home_name.encode('utf8')

            if (away_name.upper() == 'RB'):
                away_table = record_table
                home_table = []
            else:
                away_table = []
                home_table = record_table

            game_record, warning = parse_game_record(away_name, game.away_scores, away_table, \
                                                      home_name, game.home_scores, home_table)

            game.away_R = game_record.away.R
            game.away_H = game_record.away.H
            game.away_E = game_record.away.E
            game.home_R = game_record.home.R
            game.home_H = game_record.home.H
            game.home_E = game_record.home.E

            if (warning == ""):
                message = "Preview record table!"

                game_record, team = extract_single_team_data(game_record, 'RB')

                # create and save new Batting object
                nBatter = len(team.batters)
                batting_list = []

                for i in range(nBatter):
                    batting = Batting()
                    batting.game = game
                    batting.order = team.batters[i].order
                    batting.pa = team.batters[i].PA
                    batting.single = team.batters[i].B1
                    batting.double = team.batters[i].B2
                    batting.triple = team.batters[i].B3
                    batting.hr = team.batters[i].HR
                    batting.rbi = team.batters[i].RBI
                    batting.run = team.batters[i].RUN
                    batting.bb = team.batters[i].BB
                    batting.k = team.batters[i].K
                    batting.sf = team.batters[i].SF
                    batting.field = team.batters[i].pos
                    try:
                        batting.member = Member.objects.get(
                            name=team.batters[i].name.decode('utf8'))
                    except Member.DoesNotExist:
                        warning = "member name %s does not exist." % team.batters[
                            i].name
                        break

                    batting_list.append(batting)

                # create and save new Batting object
                nPitcher = len(team.pitchers)
                pitching_list = []

                for i in range(nPitcher):
                    pitching = Pitching()
                    pitching.game = game
                    pitching.order = i
                    pitching.outs = team.pitchers[i].OUT
                    pitching.pa = team.pitchers[i].TBF
                    pitching.hit = team.pitchers[i].H
                    pitching.hr = team.pitchers[i].HR
                    pitching.bb = team.pitchers[i].BB
                    pitching.k = team.pitchers[i].K
                    pitching.run = team.pitchers[i].RUN
                    pitching.er = team.pitchers[i].ER
                    pitching.go = team.pitchers[i].GO
                    pitching.fo = team.pitchers[i].FO
                    pitching.win = team.pitchers[i].WIN
                    pitching.lose = team.pitchers[i].LOSE
                    try:
                        pitching.member = Member.objects.get(
                            name=team.pitchers[i].name.decode('utf8'))
                    except Member.DoesNotExist:
                        warning = "member name %s does not exist." % team.pitchers[
                            i].name
                        break

                    pitching_list.append(pitching)

                # add rows for changing pitchers
                N = len(pitching_list)
                for i in range(5 - N):
                    pitching_list.append(Pitching())

                if 'save-game-btn' in request.POST:

                    # create and save new Game object
                    game.away_scores = IntegerArray_to_CommaSeparatedString(
                        game.away_scores)
                    game.home_scores = IntegerArray_to_CommaSeparatedString(
                        game.home_scores)
                    game.save()

                    nBatter = len(batting_list)
                    for i in range(nBatter):
                        batting = batting_list[i]
                        member_id = int(
                            request.POST.get("batting_%d_id" % (i + 1), ""))

                        if (member_id != 0):
                            batting.member = Member.objects.get(id=member_id)
                            batting.game = game
                            batting.save()

                    nPitcher = len(pitching_list)
                    for i in range(nPitcher):
                        pitching = pitching_list[i]
                        member_id = int(
                            request.POST.get("pitching_%d_id" % (i + 1), ""))

                        if (member_id != 0):
                            pitching.member = Member.objects.get(id=member_id)
                            pitching.game = game
                            pitching.outs = int(
                                request.POST.get("pitching_%d_outs" % (i + 1),
                                                 ""))
                            pitching.pa = int(
                                request.POST.get("pitching_%d_pa" % (i + 1),
                                                 ""))
                            pitching.hit = int(
                                request.POST.get("pitching_%d_hit" % (i + 1),
                                                 ""))
                            pitching.hr = int(
                                request.POST.get("pitching_%d_hr" % (i + 1),
                                                 ""))
                            pitching.bb = int(
                                request.POST.get("pitching_%d_bb" % (i + 1),
                                                 ""))
                            pitching.k = int(
                                request.POST.get("pitching_%d_k" % (i + 1),
                                                 ""))
                            pitching.run = int(
                                request.POST.get("pitching_%d_run" % (i + 1),
                                                 ""))
                            pitching.er = int(
                                request.POST.get("pitching_%d_er" % (i + 1),
                                                 ""))
                            pitching.go = int(
                                request.POST.get("pitching_%d_go" % (i + 1),
                                                 ""))
                            pitching.fo = int(
                                request.POST.get("pitching_%d_fo" % (i + 1),
                                                 ""))

                            win = request.POST.get("pitching_%d_win" % (i + 1),
                                                   "")
                            lose = request.POST.get(
                                "pitching_%d_lose" % (i + 1), "")

                            if (win != ''):
                                pitching.win = 1
                            else:
                                pitching.win = 0

                            if (lose != ''):
                                pitching.lose = 1
                            else:
                                pitching.lose = 0

                            pitching.save()

                    return redirect("/game/" + str(game.id))
                # end of add-game-btn
            # end of preview

        context = {
            'league_list': league_list,
            'game': game,
            'warning': warning,
            'message': message,
            'game_record': game_record,
            'team': team,
            'member_list': member_list,
            'batting_list': batting_list,
            'pitching_list': pitching_list
        }

        return render(request, 'team/add_game.html', context)
Example #6
0
def show_game(request, game_id):

    if not request.user.is_authenticated():
        return render(request, 'team/show_game.html')

    game = Game.objects.get(id=game_id)

    away_name = game.away_name.encode('utf8')
    home_name = game.home_name.encode('utf8')
    game.away_scores = CommaSeparatedString_to_IntegerArray(game.away_scores)
    game.home_scores = CommaSeparatedString_to_IntegerArray(game.home_scores)

    record_table = text_to_table(game.record.encode('utf8'))

    if (away_name.upper() == 'RB'):
        away_table = record_table
        home_table = []
    else:
        away_table = []
        home_table = record_table

    game_record, warning = parse_game_record(away_name, game.away_scores, away_table, \
                                         home_name, game.home_scores, home_table)

    game_record, team = extract_single_team_data(game_record, 'RB')

    if request.method != "POST":

        batting_all = Batting.objects.filter(game=game).order_by("order")
        pitching_all = Pitching.objects.filter(game=game).order_by("order")

        batting_list = []
        pitching_list = []

        for batting in batting_all:
            player = statBatting()
            player.copy(batting)
            player.stat()

            batting_list.append(player)

        for pitching in pitching_all:
            player = statPitching()
            player.copy(pitching)
            player.stat()

            pitching_list.append(player)

        context = {
            'game': game,
            'team': team,
            'batting_list': batting_list,
            'pitching_list': pitching_list
        }

        return render(request, 'team/show_game.html', context)

    else:
        # download PTT format
        if 'download-btn' in request.POST:
            print("download game %d PTT format" % game.id)
            filename = '%s.txt' % str(game.date)
            filepath = 'team/static/txt/%s' % filename

            with open(filepath, 'w') as f:
                f.write(game_record.post_ptt)
                print("save %s" % filepath)

            response = HttpResponse(
                FileWrapper(file(filepath)),
                content_type=mimetypes.guess_type(filepath)[0])
            response[
                'Content-Disposition'] = 'attachment; filename=%s' % filename
            response['Content-Length'] = os.path.getsize(filepath)

            return response

        elif 'edit-btn' in request.POST:

            return redirect("/editgame/" + str(game_id))