Esempio n. 1
0
def client(request, eid = 0):
    try:
	e = Election.objects.get(EID=eid)
    except Election.DoesNotExist:
	return HttpResponse('The election ID is invalid!')
    if request.method == 'POST':
        #response = HttpResponse("invalid code")
        #response['Access-Control-Allow-Origin'] = "*"
        #return response	
	#if request.is_ajax():#ajax post
	    #check election is running?
	    running = 0
	    if e.was_started():
		running = 1
	    if e.was_ended():
		running = 2
		if not e.request:
		    send_request(e)
		    e.request = True
		    e.save()
		    pass
	    #if e.pause:
		#running = 10
	    if running != 1:
		response = HttpResponse("invalid code")
		response['Access-Control-Allow-Origin'] = "*"
		return response
	    feedback = []
            # maximum 50 options
            for i in range(1,51):
                temp = request.POST.get('feedback'+str(i),'')
                if temp != '':
                    feedback.append(temp)
                else:
                    break
            code = request.POST["code"].upper()
            serial = request.POST["serial"].upper()
            codelist,receipt = verify_code(e,serial,code)
            if receipt != "":
                #add the code to DB
                new_entry = Vbb(election = e, serial = serial, votecode = code)
                new_entry.save()
                #store the dual ballot feedback
                for x in feedback:
                    feed = x.split(",")
                    if feed[0] in codelist:
                        balls = Dballot(vbb = new_entry, serial = serial, code = feed[0], checked = True, value = feed[1])
                        balls.save()
		response = HttpResponse(receipt)
                response['Access-Control-Allow-Origin'] = "*"
                return response
            else:
                response = HttpResponse("invalid code")
                response['Access-Control-Allow-Origin'] = "*"
                return response
	#404 if not ajax for security
	#return render_to_response('404.html')        
    else:
        return render_to_response('404.html')
Esempio n. 2
0
def client(request, eid=0):
    try:
        e = Election.objects.get(EID=eid)
    except Election.DoesNotExist:
        return HttpResponse('The election ID is invalid!')
    if request.method == 'POST':
        if request.is_ajax():  #ajax post
            #check election is running?
            running = 0
            if e.was_started():
                running = 1
            if e.was_ended():
                running = 2
                if not e.request:
                    #send_request(e)
                    #e.request = True
                    #e.save()
                    pass
            if e.pause:
                running = 10
            if running != 1:
                return HttpResponse("invalid code")
            feedback = []
            # maximum 50 options
            for i in range(1, 51):
                temp = request.POST.get('feedback' + str(i), '')
                if temp != '':
                    feedback.append(temp)
                else:
                    break
            code = request.POST["code"].upper()
            serial = request.POST["serial"].upper()
            codelist, receipt = verify_code(e, serial, code)
            if receipt != "":
                #add the code to DB
                new_entry = Vbb(election=e, serial=serial, votecode=code)
                new_entry.save()
                #store the dual ballot feedback
                for x in feedback:
                    feed = x.split(",")
                    if feed[0] in codelist:
                        balls = Dballot(vbb=new_entry,
                                        serial=serial,
                                        code=feed[0],
                                        checked=True,
                                        value=feed[1])
                        balls.save()
                return HttpResponse(receipt)
            else:
                return HttpResponse('invalid code')
        #404 if not ajax for security
        return render_to_response('404.html')
    else:
        return render_to_response('404.html')
Esempio n. 3
0
def index(request, eid = 0):
	try:
		e = Election.objects.get(EID=eid)
	except Election.DoesNotExist:
		return HttpResponse('The election ID is invalid!')
	time = 0
	options = e.choice_set.all()
	#short party names only sorted
	short_opts = [[x.votes, x.text.split(";")[0]] for x in options ]
	sorted_opts = sorted(short_opts,reverse=True)
	table_data = []
	checkcode = "invalid code"
	running = 0
	if e.was_started():
		running = 1
		time = int((e.end - timezone.now()).total_seconds())
	if e.was_ended():
		running = 2
		if not e.request:
			#send_request(e)
			#e.request = True
			#e.save()
			pass
		else:
			if e.tally:
				running = 3
	if e.pause:
                running = 10
	if request.method == 'POST':#there are two posts
		if running != 1:
			return HttpResponse("invalid code")
		if request.is_ajax():#ajax post
			form = VoteForm(request.POST) # A form bound to the POST data
			if form.is_valid(): # All validation rules pass
				s = form.cleaned_data.get('serial').upper()#request.POST['serial']
				c = form.cleaned_data.get('code').upper()#request.POST['code']
				if len(s) == 0 or len(c) ==0:
					return HttpResponse("invalid code")
				codelist,receipt = verify_code(e,s,c)
				if receipt != "":
					#add the code to DB
					new_entry = Vbb(election = e, serial = s, votecode = c)
					new_entry.save()
					#store the dual ballot
					for i in range(len(codelist)):
						balls = Dballot(vbb = new_entry, serial = s, code = codelist[i])
						balls.save()
					#return HttpResponse(receipt)
                                        return render_to_response('feedback.html', {'codes': codelist,'options':short_opts,'rec':receipt}, context_instance=RequestContext(request))
                                else:
                                        return HttpResponse("invalid code")
			else:
				return HttpResponse("invalid code")
		else:
			form = FeedbackForm(request.POST) # A form bound to the POST data
			if form.is_valid(): # All validation rules pass
				ic = form.cleaned_data.get('checkcode')				
				io = form.cleaned_data.get('checkoption') #request.POST['checkoption']
				if "Select" not in io and "Select" not in ic:# good feedback
                                        ball = Dballot.objects.get(code = ic)
                                        ball.value = io
					ball.checked = True
                                        ball.save()
				return render_to_response('thanks.html')
			else:
				return HttpResponse("Wrong Form")
	else:# no post
		data = e.vbb_set.all().order_by('-date')
		#prepare the table_data
		for item in data:
			temp_row = []
			temp_row.append(item.serial)
			temp_row.append(item.votecode)
			temp_row.append(item.date)
			unused = item.dballot_set.filter(checked = True)
			l = len(unused)
			if l==0:
			    temp_row.append("")
			    temp_row.append("")			

			else:
			#randomly display one
			    if l > 1:
				x = random.randrange(l)
				temp_row.append(unused[x].code)
                                temp_row.append(unused[x].value)
			    else: 
                                temp_row.append(unused[0].code)
			        temp_row.append(unused[0].value)
			table_data.append(temp_row)
		progress = int(e.vbb_set.count()*100/e.total+0.5)

		return render_to_response('vbb.html', {'data':table_data, 'options':sorted_opts, 'time':time, 'running':running, 'election':e, 'progress':progress}, context_instance=RequestContext(request))
Esempio n. 4
0
def index(request, eid=0):
    try:
        e = Election.objects.get(EID=eid)
    except Election.DoesNotExist:
        return HttpResponse('The election ID is invalid!')
    time = 0
    options = e.choice_set.all()
    #short party names only sorted
    short_opts = [[x.votes, x.text.split(";")[0]] for x in options]
    sorted_opts = sorted(short_opts, reverse=True)
    table_data = []
    checkcode = "invalid code"
    running = 0
    if e.was_started():
        running = 1
        time = int((e.end - timezone.now()).total_seconds())
    if e.was_ended():
        running = 2
        if not e.request:
            #send_request(e)
            #e.request = True
            #e.save()
            pass
        else:
            if e.tally:
                running = 3
    if e.pause:
        running = 10
    if request.method == 'POST':  #there are two posts
        if running != 1:
            return HttpResponse("invalid code")
        if request.is_ajax():  #ajax post
            form = VoteForm(request.POST)  # A form bound to the POST data
            if form.is_valid():  # All validation rules pass
                s = form.cleaned_data.get(
                    'serial').upper()  #request.POST['serial']
                c = form.cleaned_data.get(
                    'code').upper()  #request.POST['code']
                if len(s) == 0 or len(c) == 0:
                    return HttpResponse("invalid code")
                codelist, receipt = verify_code(e, s, c)
                if receipt != "":
                    #add the code to DB
                    new_entry = Vbb(election=e, serial=s, votecode=c)
                    new_entry.save()
                    #store the dual ballot
                    for i in range(len(codelist)):
                        balls = Dballot(vbb=new_entry,
                                        serial=s,
                                        code=codelist[i])
                        balls.save()
                    #return HttpResponse(receipt)
                    return render_to_response(
                        'feedback.html', {
                            'codes': codelist,
                            'options': short_opts,
                            'rec': receipt
                        },
                        context_instance=RequestContext(request))
                else:
                    return HttpResponse("invalid code")
            else:
                return HttpResponse("invalid code")
        else:
            form = FeedbackForm(request.POST)  # A form bound to the POST data
            if form.is_valid():  # All validation rules pass
                ic = form.cleaned_data.get('checkcode')
                io = form.cleaned_data.get(
                    'checkoption')  #request.POST['checkoption']
                if "Select" not in io and "Select" not in ic:  # good feedback
                    ball = Dballot.objects.get(code=ic)
                    ball.value = io
                    ball.checked = True
                    ball.save()
                return render_to_response('thanks.html')
            else:
                return HttpResponse("Wrong Form")
    else:  # no post
        data = e.vbb_set.all().order_by('-date')
        #prepare the table_data
        for item in data:
            temp_row = []
            temp_row.append(item.serial)
            temp_row.append(item.votecode)
            temp_row.append(item.date)
            unused = item.dballot_set.filter(checked=True)
            l = len(unused)
            if l == 0:
                temp_row.append("")
                temp_row.append("")

            else:
                #randomly display one
                if l > 1:
                    x = random.randrange(l)
                    temp_row.append(unused[x].code)
                    temp_row.append(unused[x].value)
                else:
                    temp_row.append(unused[0].code)
                    temp_row.append(unused[0].value)
            table_data.append(temp_row)
        progress = int(e.vbb_set.count() * 100 / e.total + 0.5)

        return render_to_response('vbb.html', {
            'data': table_data,
            'options': sorted_opts,
            'time': time,
            'running': running,
            'election': e,
            'progress': progress
        },
                                  context_instance=RequestContext(request))