Subversion Repositories Remote Hare Voting

Rev

Rev 16 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 16 Rev 21
Line 56... Line 56...
56
    form = cgi.FieldStorage()
56
    form = cgi.FieldStorage()
57
 
57
 
58
    if not form:
58
    if not form:
59
        emitHTML("Enter file name and press a button to see results.")
59
        emitHTML("Enter file name and press a button to see results.")
60
    elif form.has_key("fetch"):
60
    elif form.has_key("fetch"):
61
	filename = string.replace(formaction, "vote.py", "tally.py")
61
        filename = string.replace(formaction, "vote.py", "tally.py")
62
	source = open(filename).read()
62
        source = open(filename).read()
63
	print cgi.escape(source)
63
        print cgi.escape(source)
64
    elif not form.has_key("name"):
64
    elif not form.has_key("name"):
65
        emitHTML("Error: no file received")
65
        emitHTML("Error: no file received")
66
    elif not form["name"].filename:
66
    elif not form["name"].filename:
67
        emitHTML("Error: file name missing")
67
        emitHTML("Error: file name missing")
68
    else:
68
    else:
69
        name = form["name"].filename
69
        name = form["name"].filename
70
        contents = form["name"].value
70
        contents = form["name"].value
71
 
71
 
72
	tally.trace("INPUT FILE")
72
        tally.trace("INPUT FILE")
73
	tally.trace(contents)
73
        tally.trace(contents)
74
 
74
 
75
        nWinners, ballots = parseinput.parsestring(contents)
75
        nWinners, ballots = parseinput.parsestring(contents)
76
	if form.has_key("run1"):
76
        if form.has_key("run1"):
77
	    results = tally.dotally(nWinners, ballots)
77
            results = tally.dotally(nWinners, ballots)
78
	    print "\nFINAL RESULTS"
78
            print "\nFINAL RESULTS"
79
	    for winner in results:
79
            for winner in results:
80
		print "\t%s" % winner
80
                print "\t%s" % winner
81
	elif form.has_key("run1000"):
81
        elif form.has_key("run1000"):
82
	    print "RUNNING 1000 TIMES"
82
            print "RUNNING 1000 TIMES"
83
	    tally.fTrace = 0
83
            tally.fTrace = 0
84
	    summary = {}
84
            summary = {}
85
	    for i in range(1000):
85
            for i in range(1000):
86
		results = str(tally.dotally(nWinners, ballots))
86
                results = str(tally.dotally(nWinners, ballots))
87
		# print "Run %2d: %s" % (i+1, results)
87
                # print "Run %2d: %s" % (i+1, results)
88
		if not summary.has_key(results):
88
                if not summary.has_key(results):
89
		    summary[results] = 0
89
                    summary[results] = 0
90
		summary[results] = summary[results] + 1
90
                summary[results] = summary[results] + 1
91
	    print "\nSUMMARY"
91
            print "\nSUMMARY"
92
	    l = summary.items()
92
            l = summary.items()
93
	    l.sort(lambda x,y: cmp(y[1], x[1]))
93
            l.sort(lambda x,y: cmp(y[1], x[1]))
94
	    for pair in l:
94
            for pair in l:
95
		print "%2d %s" % (pair[1], pair[0])
95
                print "%2d %s" % (pair[1], pair[0])
96
	else:
96
        else:
97
	    print "UNEXPECTED SUBMIT BUTTON: %s" % form
97
            print "UNEXPECTED SUBMIT BUTTON: %s" % form
98
		
98
                
99
    emitPostHTML()
99
    emitPostHTML()
100
    return
100
    return
101
 
101
 
102
if __name__=='__main__':
102
if __name__=='__main__':
103
    main()
103
    main()