Responses side by side

parent 7882f369
......@@ -52,7 +52,7 @@ My Tests
<input name="testID" value="{{t.test_ID}}" type="hidden">
<button type="submit" class="btn btn-login float-right" style="margin-top: 10px ;margin-right: 40px">Load Test</button>
</form>
<form method="POST" action="viewTestPerformance">
<form method="POST" action="viewStudentPerformance">
{% csrf_token %}
<input name="test_ID" value="{{t.test_ID}}" type="hidden">
<button type="submit" class="btn btn-login float-right" style="margin-top: 10px ;margin-right: 40px">View Results</button>
......
{%extends 'base2.html'%}
{%block title%}
View personal Question
{%endblock%}
{%block head%}
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1.0', {'packages':['corechart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
// data.addColumn('string', 'Number');
data.addColumn('string', 'bin');
data.addColumn('number', 'Count');
// data.addRows( [['100',10],['90',9],['80',8]] );
data.addRows( {{distribution|safe}} );
console.log(data)
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, {width: 500, height: 300, title: "Scores Distribution"});
}
</script>
{%endblock%}
{%block body%}
<h1 style="text-align:center"> Test Performance</h1>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css">
<div class="container">
<div class="panel-default">
<div class="panel-heading">
<h3 class="panel-title"> Test Stats </h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<div class="row toggle">
<div id="c1" class="col-xs-10" style="float:left;width:50%">
<p> Average Score : {{test_aggregates.avg_marks}}</p>
<p>Best Score : {{test_aggregates.max_marks}} </p>
<p>Minimum score : {{test_aggregates.min_marks}} </p>
<p>Students appeared : {{test_aggregates.students_appeared}}</p>
</div>
<div class="col-xs-10" style="float: right;width:50%" id="chart_div"> </div>
</div>
<!-- <div>
<hr></hr>
</div> -->
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title"> Your Standings </h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<div class="row toggle">
<div id="c1" class="col-xs-10" style="float:left;width:50%">
<p> rank : {{rank}}</p>
<p> Score : {{marks}}</p>
</div>
<div class="col-xs-10" style="float: right;width:50%" id="chart_div"> </div>
</div>
<!-- <div>
<hr></hr>
</div> -->
</li>
</ul>
<!-- <div id="chart_div" > </div> -->
<div class="panel-heading">
<h3 class="panel-title"> Students Performance </h3>
</div>
<ul class="list-group">
{%for p in student_performance%}
<li class="list-group-item">
<!-- <li> -->
<div class="row toggle">
<div class="col-xs-10">
<p> student: {{p.student_id}}</p>
<p> rank: {{p.rank}}</p>
<p> Score: {{p.marks}}</p>
</div>
</div>
<!-- <div class="container"> -->
<!-- <div class="fluid-row"> -->
<!-- <ul>
{%for option in question.option_details%}
{%if option.is_answer %}
<li>
<p style="color: green"> {{option.option_text}} </p>
</li>
{%else%}
<li>
{{option.option_text}}
</li>
{%endif%}
{%endfor%}
</ul> -->
<!-- </div> -->
<!-- </div> -->
</li>
{%endfor%}
</ul>
<div class="panel-heading">
<h3 class="panel-title"> Per Question stats </h3>
</div>
<ul class="list-group">
{%for q in question_stats%}
<li class="list-group-item">
<!-- <li> -->
<div class="row toggle">
<div class="col-xs-10">
<p> Difficulty set: {{q.difficulty_set}}</p>
<p> Difficulty observed: {{q.difficulty_observed}}</p>
<p> Question: {{q.question_text}} </p>
</div>
</div>
<div>
<div>
<hr></hr>
<!-- <div class="container"> -->
<!-- <div class="fluid-row"> -->
<ul>
{%for option in q.option_details%}
{%if option.is_answer %}
<li>
<p style="color: green"> {{option.option_text}} </p>
</li>
{%else%}
<li>
{{option.option_text}}
</li>
{%endif%}
{%endfor%}
</ul>
<!-- </div> -->
<!-- </div> -->
</div>
</div>
</li>
{%endfor%}
</ul>
</div>
</div>
{%endblock%}
{%extends 'base2.html'%}
{%block title%}
View all Question
{%endblock%}
{%block body%}
<h1 style="text-align:center"> You CAN VIEW all your responses {{username}}</h1>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css">
<div class="container">
<div class="panel-default">
<div class="panel-heading">
<h3 class="panel-title">LIST OF QUESTIONS</h3>
</div>
<ul class="list-group">
<!-- <ul> -->
{%for question in question_responses%}
<li class="list-group-item">
<!-- <li> -->
<div class="row toggle">
<div class="col-xs-10">
{{question.answer.question_text}}
</div>
</div>
<div>
<hr></hr>
<!-- <div class="container"> -->
<div class="row">
<div class="col-xs-6">
<ul> <p>Answers</p>
{%for option in question.answer.option_details%}
{%if option.is_answer %}
<li>
<p style="color: green"> {{option.option_text}} </p>
</li>
{%else%}
<li>
{{option.option_text}}
</li>
{%endif%}
{%endfor%}
</ul>
</div>
<div class="col-xs-6">
<ul><p>Your Responses</p>
{%for option in question.response.option_details%}
{%if option.is_answer %}
<li>
<p style="color: red"> {{option.option_text}} </p>
</li>
{%else%}
<li>
{{option.option_text}}
</li>
{%endif%}
{%endfor%}
</ul>
</div>
</div>
</div>
<!-- </div> -->
</li>
{%endfor%}
</ul>
</div>
</div>
{%endblock%}
\ No newline at end of file
......@@ -28,6 +28,8 @@ urlpatterns=[
url(r'^studentTestHome', views.studentTestHome),
url(r'^loadStudentTest', views.loadStudentTest),
url(r'^viewTestPerformance',views.analyse_test),
url(r'^viewStudentPerformance',views.student_results),
# url(r'^viewStudentPerformance',views.student_responses),
]
......@@ -196,7 +196,7 @@ def result_analysis(request,test_ID):
q_stats = get_questions_dict(cursor)
print q_stats
# print q_stats
args = {"student_performance":res_stud,"test_aggregates":res_agg,"question_stats":q_stats,"distribution":hist}
return args
......@@ -216,7 +216,7 @@ def get_questions_dict(cursor):
preval = list(val[:-1])
options_so_far = [{"option_text":val[-2],"is_answer":val[-1]}]
else:
if not(preval[0]==val[0] and preval[1]==val[1]):
if not(preval[0]==val[0] ):
preval[-1] = options_so_far
# preval[1] = "q"+str(preval[1])
t = dict(zip(columns[:-1], preval))
......@@ -230,4 +230,47 @@ def get_questions_dict(cursor):
preval[-1] = options_so_far
t = dict(zip(columns[:-1], preval))
res.append(t)
return res
\ No newline at end of file
return res
def get_responses_side_by_side(test,student):
cursor = connection.cursor()
cursor.execute(''' SELECT q."q_ID" as q_ID,q.question_text,
o."option_Value" as option_details,o."is_Answer"
FROM "ARFA_app_contains" as c,"ARFA_app_question" as q,
"ARFA_app_options" as o, "ARFA_app_subject" as s
WHERE o."q_ID_id" = q."q_ID" and c."q_ID_id" = q."q_ID" and q."subject_ID_id" = s."subject_ID"
and c."test_ID_id" = %s
ORDER BY o."q_ID_id",o."option_ID" ''',[test.test_ID])
args={}
args["answers"]=get_questions_dict(cursor)
cursor = connection.cursor()
cursor.execute(''' SELECT o."q_ID_id" as q_ID,
o."option_Value" as option_details,
(case when exists
(select * from "ARFA_app_responses" as r
where r."student_ID_id"=%s and r."test_ID_id"=%s
and r."q_ID_id" = c."q_ID_id" and o."id" = r."option_ID_id"
) then TRUE else FALSE end
) as is_Answer
FROM "ARFA_app_options" as o,"ARFA_app_contains" as c
WHERE c."q_ID_id" = o."q_ID_id" and c."test_ID_id" = %s
ORDER BY o."q_ID_id" ,o."option_ID" ''',[student.username,test.test_ID,test.test_ID])
args["responses"]=get_questions_dict(cursor)
print len(args["responses"])
print len(args["answers"])
print args["responses"]
bargs = []
for i in range(len(args["responses"])):
bargs.append({"answer":args["answers"][i],"response":args["responses"][i]})
return bargs
\ No newline at end of file
......@@ -15,6 +15,7 @@ from . import utilities
from .utilities import evaluate
from . import forms
from .utilities import result_analysis
from .utilities import get_responses_side_by_side
from . import tasks
from django.http import QueryDict
......@@ -712,7 +713,7 @@ def analyse_test(request):
test = models.Test.objects.filter(test_ID=test_ID ,
start_time__lte = datetime.timedelta(minutes=5) + datetime.datetime.now() - F('expected_time_for_completion')).all()
# n = models.Created_BY().objects.filter(test_ID=test).all()
print datetime.timedelta(minutes=5) + datetime.datetime.now() - F('expected_time_for_completion')
# print datetime.timedelta(minutes=5) + datetime.datetime.now() - F('expected_time_for_completion')
if len(test)==0:
return HttpResponse("test does not exist/not completed")
......@@ -723,6 +724,44 @@ def analyse_test(request):
return render(request,'ARFA_app/performance.html',args)
def student_results(request):
if(request.session.get('session',None)!=True):
return render(request,'ARFA_app/login.html')
if(request.session.get('role',None)=="faculty"):
return HttpResponse("Not a Student")
test_ID = 0
print request.POST
if request.method == "GET":
test_ID = request.GET["test_ID"]
if request.method == "POST":
test_ID = request.POST["test_ID"]
print "test_ID"
print test_ID
test = models.Test.objects.filter(test_ID=test_ID ,
start_time__lte = datetime.timedelta(minutes=5) + datetime.datetime.now() - F('expected_time_for_completion')).all()
# n = models.Created_BY().objects.filter(test_ID=test).all()
print datetime.timedelta(minutes=5) + datetime.datetime.now() - F('expected_time_for_completion')
if len(test)==0:
return HttpResponse("test does not exist/not completed")
student = models.Student.objects.filter(username=request.session.get("username",None)).get()
takes = models.Takes.objects.filter(test_ID=test[0],student=student).all()
print "b"
print "a"
print len(takes)
args = result_analysis(request,test_ID)
args.update(request.session.get('args',None))
if len(takes)==0 :
return render(request,'ARFA_app/performance.html',args)
args["rank"]=takes[0].rank
args["marks"]=takes[0].total_marks
return render(request,'ARFA_app/student_performance.html',args)
def addimage(request):
if request.method == 'POST':
......@@ -741,5 +780,41 @@ def addimage(request):
return redirect('/arfa')
def student_responses(request):
if(request.session.get('session',None)!=True):
return render(request,'ARFA_app/login.html')
if(request.session.get('role',None)=="faculty"):
return HttpResponse("Not a Student")
test_ID = 0
print request.POST
if request.method == "GET":
test_ID = request.GET["test_ID"]
if request.method == "POST":
test_ID = request.POST["test_ID"]
print "test_ID"
print test_ID
test = models.Test.objects.filter(test_ID=test_ID ,
start_time__lte = datetime.timedelta(minutes=5) + datetime.datetime.now() - F('expected_time_for_completion')).all()
# n = models.Created_BY().objects.filter(test_ID=test).all()
print datetime.timedelta(minutes=5) + datetime.datetime.now() - F('expected_time_for_completion')
if len(test)==0:
return HttpResponse("test does not exist/not completed")
student = models.Student.objects.filter(username=request.session.get("username",None)).get()
takes = models.Takes.objects.filter(test_ID=test[0],student=student).all()
if len(takes)==0:
return HttpResponse("Test Not Given")
lst = get_responses_side_by_side(test[0],student)
args={"question_responses":lst}
args.update(request.session.get('args',None))
return render(request,'ARFA_app/student_responses.html',args)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment