Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
ARFA
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
ARFA
ARFA
Commits
3c422045
Commit
3c422045
authored
Nov 27, 2018
by
CHINTHAREDDY SAI CHARITH REDDY
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Responses side by side
parent
7882f369
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
358 additions
and
5 deletions
+358
-5
ARFA/ARFA_app/templates/ARFA_app/studentTestHome.html
ARFA/ARFA_app/templates/ARFA_app/studentTestHome.html
+1
-1
ARFA/ARFA_app/templates/ARFA_app/student_performance.html
ARFA/ARFA_app/templates/ARFA_app/student_performance.html
+165
-0
ARFA/ARFA_app/templates/ARFA_app/student_responses.html
ARFA/ARFA_app/templates/ARFA_app/student_responses.html
+68
-0
ARFA/ARFA_app/urls.py
ARFA/ARFA_app/urls.py
+2
-0
ARFA/ARFA_app/utilities.py
ARFA/ARFA_app/utilities.py
+46
-3
ARFA/ARFA_app/views.py
ARFA/ARFA_app/views.py
+76
-1
No files found.
ARFA/ARFA_app/templates/ARFA_app/studentTestHome.html
View file @
3c422045
...
...
@@ -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=
"view
Tes
tPerformance"
>
<form
method=
"POST"
action=
"view
Studen
tPerformance"
>
{% 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>
...
...
ARFA/ARFA_app/templates/ARFA_app/student_performance.html
0 → 100644
View file @
3c422045
{%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%}
ARFA/ARFA_app/templates/ARFA_app/student_responses.html
0 → 100644
View file @
3c422045
{%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
ARFA/ARFA_app/urls.py
View file @
3c422045
...
...
@@ -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),
]
ARFA/ARFA_app/utilities.py
View file @
3c422045
...
...
@@ -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
ARFA/ARFA_app/views.py
View file @
3c422045
...
...
@@ -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
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment