def enter_result(request, round_id): round_obj = Round.objects.get(id=round_id) if request.method == 'POST': form = ResultEntryForm(request.POST, round_instance=round_obj) if form.is_valid(): try: result = form.save() except ValueError: return render_to_response('error.html', {'error_type': "Round Result", 'error_name': "["+str(round_obj)+"]", 'error_info':"Invalid round result, could not remedy."}, context_instance=RequestContext(request)) return render_to_response('thanks.html', {'data_type': "Round Result", 'data_name': "["+str(round_obj)+"]"}, context_instance=RequestContext(request)) else: is_current = round_obj.round_number == TabSettings.objects.get(key="cur_round") form = ResultEntryForm(round_instance=round_obj) return render_to_response('round_entry.html', {'form': form, 'title': "Entering Ballot for {}".format(str(round_obj)), 'gov_team': round_obj.gov_team, 'opp_team': round_obj.opp_team}, context_instance=RequestContext(request))
def enter_result(request, round_id): round_obj = Round.objects.get(id=round_id) if request.method == 'POST': form = ResultEntryForm(request.POST, round_instance=round_obj) if form.is_valid(): try: result = form.save() except ValueError: return render_to_response( 'error.html', { 'error_type': "Round Result", 'error_name': "[" + str(round_obj) + "]", 'error_info': "Invalid round result, could not remedy." }, context_instance=RequestContext(request)) return render_to_response('thanks.html', { 'data_type': "Round Result", 'data_name': "[" + str(round_obj) + "]" }, context_instance=RequestContext(request)) else: is_current = round_obj.round_number == TabSettings.objects.get( key="cur_round") form = ResultEntryForm(round_instance=round_obj) return render_to_response( 'round_entry.html', { 'form': form, 'title': "Entering Ballot for {}".format(str(round_obj)), 'gov_team': round_obj.gov_team, 'opp_team': round_obj.opp_team }, context_instance=RequestContext(request))
def enter_multiple_results(request, round_id, num_entered): round_obj = Round.objects.get(id=round_id) num_entered = max(int(num_entered), 1) if request.method == 'POST': forms = [ ResultEntryForm(request.POST, prefix=str(i), round_instance=round_obj, no_fill=True) for i in range(1, num_entered + 1) ] all_good = True for form in forms: all_good = all_good and form.is_valid() if all_good: # result is of the format: # winner_1 => [(debater, role, speaks, rank), (debater, role, speaks, rank) ...] # winner_2 => [(debater, role, sp ...] result = {} debaters = ResultEntryForm.GOV + ResultEntryForm.OPP for form in forms: cleaned_data = form.cleaned_data winner = cleaned_data["winner"] if winner not in result: result[winner] = [] result[winner].append([]) for debater in debaters: old_stats = RoundStats.objects.filter(round=round_obj, debater_role=debater) if len(old_stats) > 0: old_stats.delete() debater_obj = Debater.objects.get( pk=cleaned_data["%s_debater" % (debater)]) debater_role_obj = debater speaks_obj, ranks_obj = float( cleaned_data["%s_speaks" % (debater)]), int( cleaned_data["%s_ranks" % (debater)]) result[winner][-1].append( (debater_obj, debater_role_obj, speaks_obj, ranks_obj)) # Validate the extracted data and return it all_good, error_msg = validate_panel(result) if all_good: final_scores, final_winner = score_panel( result, "discard_minority" in request.POST) print final_scores for (debater, role, speaks, ranks) in final_scores: RoundStats.objects.create(debater=debater, round=round_obj, speaks=speaks, ranks=ranks, debater_role=role) round_obj.victor = final_winner round_obj.save() return render_to_response( 'thanks.html', { 'data_type': "Round Result", 'data_name': "[" + str(round_obj) + "]" }, context_instance=RequestContext(request)) else: forms[0]._errors["winner"] = forms[0].error_class([error_msg]) else: forms = [ ResultEntryForm(prefix=str(i), round_instance=round_obj, no_fill=True) for i in range(1, num_entered + 1) ] return render_to_response( 'round_entry_multiple.html', { 'forms': forms, 'title': "Entering Ballots for {}".format(str(round_obj)), 'gov_team': round_obj.gov_team, 'opp_team': round_obj.opp_team }, context_instance=RequestContext(request))