Solved tests history upgrade

This commit is contained in:
Piotr Kopycki 2022-04-15 21:04:04 +02:00
parent a0e0ff7e03
commit 696a573b08
7 changed files with 86 additions and 41 deletions

View File

@ -1,8 +1,11 @@
Color palette: Color palette:
#00916E - Illuminating Emerald
#FEEFE5 - Linen #FEEFE5 - Linen
#FFCF00 - Cyber Yellow #FFCF00 - Cyber Yellow
#EE6123 - Orange Panteon #EE6123 - Orange Panteon
#FA003F - Red Munsell #FA003F - Red Munsell
Buttons and links
#00916E - Illuminating Emerald
Main color:
#FF0B7E - Winter Sky #FF0B7E - Winter Sky

View File

@ -97,7 +97,15 @@
border-radius: 25px; border-radius: 25px;
border: 2px solid #FF0B7E; border: 2px solid #FF0B7E;
padding: 20px; padding: 20px;
width: 300px; width: 320px;
height: 250px;
}
.solvedTestContainerMini {
border-radius: 25px;
border: 2px solid #FF0B7E;
padding: 20px;
width: 320px;
height: 200px; height: 200px;
} }
@ -453,6 +461,7 @@ background-color:#FF0B7E
.linkDefault a { .linkDefault a {
color: #00916E; color: #00916E;
text-decoration: none; text-decoration: none;
font-weight: bold;
} }
.newContainer input[type=submit]{ .newContainer input[type=submit]{

View File

@ -9,7 +9,7 @@
<input type="submit" value="Zaktualizuj email"><br><br> <input type="submit" value="Zaktualizuj email"><br><br>
</form> </form>
<div class="linkDefault"> <div class="linkDefault">
<a href="{% url 'account' %}">Wróc</a> <a href="{% url 'account' %}">Wróć</a>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -4,16 +4,21 @@
{% block content %} {% block content %}
<h1>Historia rozwiązanych testów</h1> <h1>Historia rozwiązanych testów</h1>
{% for test in tests %} {% for test, results in tests_lists.items %}
<div class="solvedTestContainer"> <div class="solvedTestContainer">
<div class="mainTestName"> <div class="mainTestName">
{{test.name}} {{results.0.name}}
</div>
<div class="solvedTestText">Twój wynik: {{results.0.score}}</div>
<div class="solvedTestText">Próg zaliczenia: {{results.0.passing_score}}</div>
<div class="solvedTestText">Maksymalny wynik: {{results.0.max}}</div>
<div class="solvedTestText">Wynik procentowy: {{results.0.percentage}}%</div>
{% if results|length > 1 %}
<div class="linkDefault">
<a href="solved/{{results.0.id}}">Sprawdź poprzednie wyniki ({{results|length}})</a>
</div>
{% endif %}
</div> </div>
<div class="solvedTestText">Twój wynik: {{test.score}}</div> <br>
<div class="solvedTestText">Próg zaliczenia: {{test.passing_score}}</div> {% endfor %}
<div class="solvedTestText">Maksymalny wynik: {{test.max}}</div>
<div class="solvedTestText">Wynik procentowy: {{test.percentage}}%</div>
</div>
<br>
{% endfor %}
{% endblock %} {% endblock %}

View File

@ -0,0 +1,16 @@
{% extends "base.html" %}
{% block title %}Historia testu{% endblock %}
{% block content %}
<h1>Historia testu: {{name}}</h1>
{% for test in tests %}
<div class="solvedTestContainerMini">
<div class="solvedTestText">Twój wynik: {{test.score}}</div>
<div class="solvedTestText">Próg zaliczenia: {{test.passing_score}}</div>
<div class="solvedTestText">Maksymalny wynik: {{test.max}}</div>
<div class="solvedTestText">Wynik procentowy: {{test.percentage}}%</div>
</div>
<br>
{% endfor %}
{% endblock %}

View File

@ -1,10 +1,7 @@
from django.urls import path from django.urls import path
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from trials.views import TestModelViewSet from trials.views import TestModelViewSet, TestTemplateView, TestValidateAPIView, TestResultView, addTest, addQuestions, myTests, solvedTests, solvedTestsDetailed, EditTestTemplateView, deleteTest, AddQuestionToExistingTest, RemoveQuestionFromExistingTest, EditQuestionTemplateView, editName, editVisible, editPassword, TestPasswordTemplateView
from trials.views import TestTemplateView
from trials.views import TestValidateAPIView
from trials.views import TestResultView, addTest, addQuestions, myTests, editTest, solvedTests, EditTestTemplateView, deleteTest, AddQuestionToExistingTest, RemoveQuestionFromExistingTest, EditQuestionTemplateView, editName, editVisible, editPassword, TestPasswordTemplateView
router = DefaultRouter(trailing_slash=False) router = DefaultRouter(trailing_slash=False)
router.register("items", TestModelViewSet) router.register("items", TestModelViewSet)
@ -22,11 +19,11 @@ urlpatterns = [
path('<int:test_id>/editVisible', editVisible, name="editVisible"), path('<int:test_id>/editVisible', editVisible, name="editVisible"),
path('<int:test_id>/editPassword', editPassword, name="editPassword"), path('<int:test_id>/editPassword', editPassword, name="editPassword"),
path('<int:test_id>/remove', deleteTest, name="deleteTest"), path('<int:test_id>/remove', deleteTest, name="deleteTest"),
# path('delete', deleteTest, name="deleteTest"),
path('add/test', addTest, name="newTest"), path('add/test', addTest, name="newTest"),
path('add/questions', addQuestions, name="addQuestions"), path('add/questions', addQuestions, name="addQuestions"),
path('my', myTests, name="myTests"), path('my', myTests, name="myTests"),
path('solved', solvedTests, name="solvedTests") path('solved', solvedTests, name="solvedTests"),
path('solved/<int:test_id>', solvedTestsDetailed, name="solvedTests")
] ]
urlpatterns += router.urls urlpatterns += router.urls

View File

@ -156,31 +156,46 @@ def solvedTests(request):
context = {} context = {}
user_id = request.user.id user_id = request.user.id
solved_tests = SolvedTest.objects.filter(user__id=user_id) solved_tests = SolvedTest.objects.filter(user__id=user_id)
formatted_tests = list() dict_with_lists_of_test_results = {}
for solved_test in solved_tests: for solved_test in solved_tests:
formatted_tests.append({ if solved_test.test.name_and_passing_score()["name"] in dict_with_lists_of_test_results.keys():
"name": solved_test.test.name_and_passing_score()["name"], dict_with_lists_of_test_results[solved_test.test.name_and_passing_score()["name"]].insert(0, {
"passing_score": solved_test.test.name_and_passing_score()["passing_score"], "name": solved_test.test.name_and_passing_score()["name"],
"score": solved_test.score, "passing_score": solved_test.test.name_and_passing_score()["passing_score"],
"max": solved_test.max, "score": solved_test.score,
"percentage": solved_test.percentage "max": solved_test.max,
}) "percentage": solved_test.percentage,
context['tests'] = formatted_tests "id": solved_test.test.id
})
else:
dict_with_lists_of_test_results[solved_test.test.name_and_passing_score()["name"]] = []
dict_with_lists_of_test_results[solved_test.test.name_and_passing_score()["name"]].append({
"name": solved_test.test.name_and_passing_score()["name"],
"passing_score": solved_test.test.name_and_passing_score()["passing_score"],
"score": solved_test.score,
"max": solved_test.max,
"percentage": solved_test.percentage,
"id": solved_test.test.id
})
context['tests_lists'] = dict_with_lists_of_test_results
return render(request, 'solvedTests.html', context) return render(request, 'solvedTests.html', context)
def editTest(request): def solvedTestsDetailed(request, test_id):
if request.POST: context = {}
# TODO here solved_tests = SolvedTest.objects.filter(test__id=test_id)
# firstName = request.POST.get("firstName") formatted_tests = list()
# lastName = request.POST.get("lastName") for solved_test in solved_tests:
# formatted_tests.append({
# u = request.user "passing_score": solved_test.test.name_and_passing_score()["passing_score"],
# u.first_name = firstName "score": solved_test.score,
# u.last_name = lastName "max": solved_test.max,
# u.save() "percentage": solved_test.percentage,
return redirect('myTests') "id": solved_test.test.id
return render(request, 'editTest.html') })
context['name'] = solved_tests[0].test.name_and_passing_score()["name"]
context['tests'] = formatted_tests
return render(request, 'solvedTestsDetailed.html', context)
class EditTestTemplateView(TemplateView): class EditTestTemplateView(TemplateView):