summaryrefslogtreecommitdiff
path: root/yaksh
diff options
context:
space:
mode:
Diffstat (limited to 'yaksh')
-rw-r--r--yaksh/models.py13
-rw-r--r--yaksh/templates/yaksh/user_data.html24
-rw-r--r--yaksh/test_models.py8
-rw-r--r--yaksh/views.py1
4 files changed, 28 insertions, 18 deletions
diff --git a/yaksh/models.py b/yaksh/models.py
index d051e68..8297ec8 100644
--- a/yaksh/models.py
+++ b/yaksh/models.py
@@ -2323,6 +2323,17 @@ class AnswerPaper(models.Model):
'answer': answer,
'error_list': [e for e in json.loads(answer.error)]
}]
+
+ for question, answers in q_a.items():
+ answers = q_a[question]
+ q_a[question].append({
+ 'marks': max([
+ answer['answer'].marks
+ for answer in answers
+ if question == answer['answer'].question
+ ])
+ })
+
return q_a
def get_latest_answer(self, question_id):
@@ -2332,7 +2343,7 @@ class AnswerPaper(models.Model):
return self.questions.filter(active=True)
def get_questions_answered(self):
- return self.questions_answered.all()
+ return self.questions_answered.all().distinct()
def get_questions_unanswered(self):
return self.questions_unanswered.all()
diff --git a/yaksh/templates/yaksh/user_data.html b/yaksh/templates/yaksh/user_data.html
index 6252fb3..a79071d 100644
--- a/yaksh/templates/yaksh/user_data.html
+++ b/yaksh/templates/yaksh/user_data.html
@@ -74,19 +74,17 @@
</tr>
</thead>
<tbody>
- {% for question, answers in paper.get_question_answers.items %}
- {% with answers|last as answer %}
- <tr>
+ {% for question, answers in paper.get_question_answers.items %}
+ <tr>
+ <td>{{question.summary}}</td>
+ <td>{{question.type}}</td>
<td>
- <a href="#question_{{question.id}}">
- {{ question.summary }}
- </a>
+ {% for answer in answers %}
+ {{answer.marks}}
+ {% endfor %}
</td>
- <td>{{ question.type }}</td>
- <td>{{ answer.answer.marks }}</td>
- </tr>
- {% endwith %}
- {% endfor %}
+ </tr>
+ {% endfor %}
</tbody>
</table>
{% for question, answers in paper.get_question_answers.items %}
@@ -313,12 +311,12 @@
<div class="col-md-2">
<label class="col-form-label" for="q{{ question.id }}">Marks:</label>
{% with answers|last as answer %}
- <input id="q{{ question.id }}" type="text" name="q{{ question.id }}_marks" size="4" class="form-control" value="{{ answer.answer.marks }}" readonly=""><br><br>
+ <input id="q{{ question.id }}" type="text" name="q{{ question.id }}_marks" size="4" class="form-control" value="{{ answer.marks }}" readonly=""><br><br>
{% endwith %}
</div>
</div>
<hr/>
- {% endfor %} {# for question, answers ... #}
+ {% endfor %} {# for question, answers ... #}
<div class="form-group">
<h3>Teacher comments: </h3>
<textarea id="comments_{{paper.question_paper.id}}" class="form-control"
diff --git a/yaksh/test_models.py b/yaksh/test_models.py
index e24a38e..7ef1ca7 100644
--- a/yaksh/test_models.py
+++ b/yaksh/test_models.py
@@ -1791,12 +1791,14 @@ class AnswerPaperTestCases(unittest.TestCase):
answers_saved = Answer.objects.filter(question=question)
error_list = [json.loads(ans.error) for ans in answers_saved]
if answers_saved:
- self.assertEqual(len(answered[question]), len(answers_saved))
+ self.assertGreater(len(answered[question]), len(answers_saved))
ans = []
err = []
for val in answered[question]:
- ans.append(val.get('answer'))
- err.append(val.get('error_list'))
+ if val.get('answer') is not None:
+ ans.append(val.get('answer'))
+ if val.get('error_list') is not None:
+ err.append(val.get('error_list'))
self.assertEqual(set(ans), set(answers_saved))
self.assertEqual(error_list, err)
diff --git a/yaksh/views.py b/yaksh/views.py
index 01f5e4e..0ed8f9f 100644
--- a/yaksh/views.py
+++ b/yaksh/views.py
@@ -1798,7 +1798,6 @@ def user_data(request, user_id, questionpaper_id=None, course_id=None):
raise Http404('You are not allowed to view this page!')
user = User.objects.get(id=user_id)
data = AnswerPaper.objects.get_user_data(user, questionpaper_id, course_id)
-
context = {'data': data, 'course_id': course_id}
return my_render_to_response(request, 'yaksh/user_data.html', context)