New metadata, statistics and icons for tests
This commit is contained in:
parent
696a573b08
commit
2721421c1d
@ -55,6 +55,7 @@ INSTALLED_APPS = [
|
|||||||
"rest_framework_simplejwt",
|
"rest_framework_simplejwt",
|
||||||
"django_extensions",
|
"django_extensions",
|
||||||
"django_social_share",
|
"django_social_share",
|
||||||
|
'fontawesomefree',
|
||||||
|
|
||||||
"users",
|
"users",
|
||||||
"trials",
|
"trials",
|
||||||
|
@ -8,4 +8,6 @@ Buttons and links
|
|||||||
#00916E - Illuminating Emerald
|
#00916E - Illuminating Emerald
|
||||||
|
|
||||||
Main color:
|
Main color:
|
||||||
#FF0B7E - Winter Sky
|
#FF0B7E - Winter Sky
|
||||||
|
|
||||||
|
#19647E - Blue Sapphire
|
@ -109,3 +109,4 @@ wcwidth==0.2.5
|
|||||||
webencodings==0.5.1
|
webencodings==0.5.1
|
||||||
widgetsnbextension==3.5.2
|
widgetsnbextension==3.5.2
|
||||||
zipp==3.6.0
|
zipp==3.6.0
|
||||||
|
fontawesomefree==6.1.1
|
@ -83,8 +83,8 @@
|
|||||||
border-radius: 25px;
|
border-radius: 25px;
|
||||||
border: 2px solid #FF0B7E;
|
border: 2px solid #FF0B7E;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
width: 800px;
|
width: 750px;
|
||||||
height: 150px;
|
height: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mainTestName {
|
.mainTestName {
|
||||||
@ -115,12 +115,38 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.mainTestMeta {
|
.mainTestMeta {
|
||||||
font-size: 13px;
|
padding-bottom: 30px;
|
||||||
padding-bottom: 40px;
|
|
||||||
color: #808080;
|
|
||||||
/*transform: translate(150%,0%);*/
|
/*transform: translate(150%,0%);*/
|
||||||
width:100%;
|
width:100%;
|
||||||
text-align:center;
|
}
|
||||||
|
|
||||||
|
.mainTestMetaLine {
|
||||||
|
padding-bottom: 10px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mainTestMetaInfoText {
|
||||||
|
width: 250px;
|
||||||
|
color: #808080;
|
||||||
|
font-size: 13px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mainTestMetaLineLabels {
|
||||||
|
padding-bottom: 10px;
|
||||||
|
padding-top: 10px;
|
||||||
|
margin-left: 15%;
|
||||||
|
margin-right: 15%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mainTestMetaLabels {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000000;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
@ -340,6 +366,15 @@ background-color:#FF0B7E
|
|||||||
padding-bottom: 15px;
|
padding-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.resultContainer label {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.resultContainerSpace {
|
||||||
|
padding-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
.resultImage{
|
.resultImage{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -498,4 +533,16 @@ background-color:#FF0B7E
|
|||||||
|
|
||||||
span {
|
span {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.starChecked {
|
||||||
|
color: gold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fireChecked {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.locked {
|
||||||
|
color: #19647E;
|
||||||
}
|
}
|
@ -6,6 +6,10 @@
|
|||||||
<link rel="stylesheet" type="text/css" href="{% static 'style.css' %}">
|
<link rel="stylesheet" type="text/css" href="{% static 'style.css' %}">
|
||||||
<title>SOITA | {% block title %}{% endblock %}</title>
|
<title>SOITA | {% block title %}{% endblock %}</title>
|
||||||
<meta name="description" content="{% block description %}{% endblock %}">
|
<meta name="description" content="{% block description %}{% endblock %}">
|
||||||
|
|
||||||
|
<!-- reference your installed Font Awesome Free package's files here -->
|
||||||
|
<script src="{% static 'fontawesomefree/js/all.min.js' %}"></script>
|
||||||
|
<link href="{% static 'fontawesomefree/css/all.min.css' %}" rel="stylesheet" type="text/css">
|
||||||
{% block additional_head %}
|
{% block additional_head %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</head>
|
</head>
|
||||||
|
@ -14,11 +14,104 @@
|
|||||||
<div class="mainTestContainer">
|
<div class="mainTestContainer">
|
||||||
<div class="mainTestName">
|
<div class="mainTestName">
|
||||||
{{test.name}}
|
{{test.name}}
|
||||||
|
{% if test.password != "" %}
|
||||||
|
<i class="fa-solid fa-lock locked" title="Test protected with password"></i>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="mainTestMeta">
|
<div class="mainTestMeta">
|
||||||
<div class="left">Kategoria: {{test.category}}</div>
|
<div class="mainTestMetaLine">
|
||||||
<div class="center">Próg zaliczenia: {{test.passing_score}}</div>
|
<div class="mainTestMetaInfoText">Kategoria: {{test.category}}</div>
|
||||||
<div class="right">Liczba pytań: {{test.question_count}}</div>
|
<div class="mainTestMetaInfoText">Autor: {{test.get_author_name}}</div>
|
||||||
|
<div class="mainTestMetaInfoText">Rozwiązania: {{test.completions}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="mainTestMetaLine">
|
||||||
|
<div class="mainTestMetaInfoText">Próg zaliczenia: {{test.passing_score}}</div>
|
||||||
|
<div class="mainTestMetaInfoText">Maksymalna ilość punktów: {{test.get_maxscore}}</div>
|
||||||
|
<div class="mainTestMetaInfoText">Ilość pytań: {{test.question_count}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="mainTestMetaLineLabels">
|
||||||
|
<div class="mainTestMetaLabels">
|
||||||
|
Trudność:
|
||||||
|
{% if test.avg_difficulty == 0.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
{% elif test.avg_difficulty < 20.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%">></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%">></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%">></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%">></span>
|
||||||
|
{% elif test.avg_difficulty < 40.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
{% elif test.avg_difficulty < 60.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
{% elif test.avg_difficulty < 80.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
{% else %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="mainTestMetaLabels">
|
||||||
|
Ocena:
|
||||||
|
{% if test.avg_rating == 0 %}
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
{% elif test.avg_rating == 1 %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
{% elif test.avg_rating == 2 %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
{% elif test.avg_rating == 3 %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
{% elif test.avg_rating == 4 %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako dobry"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako dobry"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako dobry"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako dobry"></span>
|
||||||
|
<span class="fa fa-star"></span>
|
||||||
|
{% else %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
{% endif %}
|
||||||
|
(Głosy: {{test.rates_amount}})
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="mainTestDesc">-->
|
<!-- <div class="mainTestDesc">-->
|
||||||
<!-- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus volutpat scelerisque tortor, id sodales leo finibus id. Vivamus id viverra nunc, ac faucibus metus. Nulla a mauris imperdiet sapien lobortis dapibus. Quisque ornare posuere pulvinar.-->
|
<!-- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus volutpat scelerisque tortor, id sodales leo finibus id. Vivamus id viverra nunc, ac faucibus metus. Nulla a mauris imperdiet sapien lobortis dapibus. Quisque ornare posuere pulvinar.-->
|
||||||
|
@ -8,17 +8,108 @@
|
|||||||
<div class="mainTestContainer">
|
<div class="mainTestContainer">
|
||||||
<div class="mainTestName">
|
<div class="mainTestName">
|
||||||
{{test.name}}
|
{{test.name}}
|
||||||
<i class="fa-solid fa-lock"></i>
|
{% if test.password != "" %}
|
||||||
|
<i class="fa-solid fa-lock locked" title="Test protected with password"></i>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="mainTestMeta">
|
<div class="mainTestMeta">
|
||||||
<div class="left">Kategoria: {{test.category}}</div>
|
<div class="mainTestMetaLine">
|
||||||
<div class="center">Próg zaliczenia: {{test.passing_score}}</div>
|
<div class="mainTestMetaInfoText">Kategoria: {{test.category}}</div>
|
||||||
<div class="right">Liczba pytań: {{test.question_count}}</div>
|
<div class="mainTestMetaInfoText">Autor: {{test.get_author_name}}</div>
|
||||||
|
<div class="mainTestMetaInfoText">Rozwiązania: {{test.completions}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="mainTestMetaLine">
|
||||||
|
<div class="mainTestMetaInfoText">Próg zaliczenia: {{test.passing_score}}</div>
|
||||||
|
<div class="mainTestMetaInfoText">Maksymalna ilość punktów: {{test.get_maxscore}}</div>
|
||||||
|
<div class="mainTestMetaInfoText">Ilość pytań: {{test.question_count}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="mainTestMetaLineLabels">
|
||||||
|
<div class="mainTestMetaLabels">
|
||||||
|
Trudność:
|
||||||
|
{% if test.avg_difficulty == 0.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
{% elif test.avg_difficulty < 20.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%">></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%">></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%">></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%">></span>
|
||||||
|
{% elif test.avg_difficulty < 40.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
{% elif test.avg_difficulty < 60.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
{% elif test.avg_difficulty < 80.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
{% else %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="mainTestMetaLabels">
|
||||||
|
Ocena:
|
||||||
|
{% if test.avg_rating == 0 %}
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
{% elif test.avg_rating == 1 %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
{% elif test.avg_rating == 2 %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
{% elif test.avg_rating == 3 %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
{% elif test.avg_rating == 4 %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako dobry"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako dobry"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako dobry"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako dobry"></span>
|
||||||
|
<span class="fa fa-star"></span>
|
||||||
|
{% else %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
{% endif %}
|
||||||
|
(Głosy: {{test.rates_amount}})
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="mainTestDesc">-->
|
<!-- <div class="mainTestDesc">-->
|
||||||
<!-- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus volutpat scelerisque tortor, id sodales leo finibus id. Vivamus id viverra nunc, ac faucibus metus. Nulla a mauris imperdiet sapien lobortis dapibus. Quisque ornare posuere pulvinar.-->
|
<!-- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus volutpat scelerisque tortor, id sodales leo finibus id. Vivamus id viverra nunc, ac faucibus metus. Nulla a mauris imperdiet sapien lobortis dapibus. Quisque ornare posuere pulvinar.-->
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
{# <button><a href="/tests/{{test.id}}/show">Rozwiąż</a></button>#}
|
|
||||||
<button><a href="/tests/{{test.id}}/password">Rozwiąż</a></button>
|
<button><a href="/tests/{{test.id}}/password">Rozwiąż</a></button>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
|
@ -8,11 +8,104 @@
|
|||||||
<div class="mainTestContainer">
|
<div class="mainTestContainer">
|
||||||
<div class="mainTestName">
|
<div class="mainTestName">
|
||||||
{{test.name}}
|
{{test.name}}
|
||||||
|
{% if test.password != "" %}
|
||||||
|
<i class="fa-solid fa-lock locked" title="Test protected with password"></i>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="mainTestMeta">
|
<div class="mainTestMeta">
|
||||||
<div class="left">Kategoria: {{test.category}}</div>
|
<div class="mainTestMetaLine">
|
||||||
<div class="center">Próg zaliczenia: {{test.passing_score}}</div>
|
<div class="mainTestMetaInfoText">Kategoria: {{test.category}}</div>
|
||||||
<div class="right">Liczba pytań: {{test.question_count}}</div>
|
<div class="mainTestMetaInfoText">Autor: {{test.get_author_name}}</div>
|
||||||
|
<div class="mainTestMetaInfoText">Rozwiązania: {{test.completions}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="mainTestMetaLine">
|
||||||
|
<div class="mainTestMetaInfoText">Próg zaliczenia: {{test.passing_score}}</div>
|
||||||
|
<div class="mainTestMetaInfoText">Maksymalna ilość punktów: {{test.get_maxscore}}</div>
|
||||||
|
<div class="mainTestMetaInfoText">Ilość pytań: {{test.question_count}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="mainTestMetaLineLabels">
|
||||||
|
<div class="mainTestMetaLabels">
|
||||||
|
Trudność:
|
||||||
|
{% if test.avg_difficulty == 0.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Brak - za mało osób rozwiązało ten test"></span>
|
||||||
|
{% elif test.avg_difficulty < 20.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%">></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%">></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%">></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Bardzo trudny test, średni wynik użytkowników poniżej 20%">></span>
|
||||||
|
{% elif test.avg_difficulty < 40.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Trudny test, średni wynik użytkowników nie przekracza 40%"></span>
|
||||||
|
{% elif test.avg_difficulty < 60.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Przeciętny test, średni wynik użytkowników nie przekracza 60%"></span>
|
||||||
|
{% elif test.avg_difficulty < 80.0 %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved" title="Łatwy test, średni wynik użytkowników nie przekracza 80%"></span>
|
||||||
|
{% else %}
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
<span class="fa-solid fa-fire-flame-curved fireChecked" title="Banalny test, średni wynik użytkowników powyżej 80%"></span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="mainTestMetaLabels">
|
||||||
|
Ocena:
|
||||||
|
{% if test.avg_rating == 0 %}
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy jeszcze nie ocenili tego testu, bądź pierwszy"></span>
|
||||||
|
{% elif test.avg_rating == 1 %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako tragiczny"></span>
|
||||||
|
{% elif test.avg_rating == 2 %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako słaby"></span>
|
||||||
|
{% elif test.avg_rating == 3 %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
<span class="fa fa-star" title="Użytkownicy ocenili ten test jako przeciętny"></span>
|
||||||
|
{% elif test.avg_rating == 4 %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako dobry"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako dobry"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako dobry"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako dobry"></span>
|
||||||
|
<span class="fa fa-star"></span>
|
||||||
|
{% else %}
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
<span class="fa fa-star starChecked" title="Użytkownicy ocenili ten test jako genialny"></span>
|
||||||
|
{% endif %}
|
||||||
|
(Głosy: {{test.rates_amount}})
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="mainTestDesc">-->
|
<!-- <div class="mainTestDesc">-->
|
||||||
<!-- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus volutpat scelerisque tortor, id sodales leo finibus id. Vivamus id viverra nunc, ac faucibus metus. Nulla a mauris imperdiet sapien lobortis dapibus. Quisque ornare posuere pulvinar.-->
|
<!-- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus volutpat scelerisque tortor, id sodales leo finibus id. Vivamus id viverra nunc, ac faucibus metus. Nulla a mauris imperdiet sapien lobortis dapibus. Quisque ornare posuere pulvinar.-->
|
||||||
|
@ -26,13 +26,29 @@
|
|||||||
<h5 class="resultText">Próg zaliczenia: {{ request.session.passing }}</h5>
|
<h5 class="resultText">Próg zaliczenia: {{ request.session.passing }}</h5>
|
||||||
<h5 class="resultText">Maksymalny wynik: {{ request.session.max }}</h5>
|
<h5 class="resultText">Maksymalny wynik: {{ request.session.max }}</h5>
|
||||||
<h5 class="resultText">Wynik procentowy: {{ request.session.percentage }}%</h5>
|
<h5 class="resultText">Wynik procentowy: {{ request.session.percentage }}%</h5>
|
||||||
<button class="defaultButton"><a href="{% url 'home' %}">Strona główna</a></button>
|
|
||||||
|
<div class="resultContainerSapce"><br></div>
|
||||||
|
<span><label for="rate"><h5>Jak oceniasz test:</h5></label></span>
|
||||||
|
<select name="rate" id="rate">
|
||||||
|
<option value="1">Tragiczny</option>
|
||||||
|
<option value="2">Słaby</option>
|
||||||
|
<option value="3">Przeciętny</option>
|
||||||
|
<option value="4">Dobry</option>
|
||||||
|
<option value="5">Genialny</option>
|
||||||
|
</select>
|
||||||
|
<span><button class="defaultButton">
|
||||||
|
<a href='' onclick="this.href='rateTest?rate='+document.getElementById('rate').value">Oceń</a>
|
||||||
|
</button></span>
|
||||||
|
<div class="resultContainerSapce"><br></div>
|
||||||
|
|
||||||
{% if request.session.password == "" %}
|
{% if request.session.password == "" %}
|
||||||
<br>
|
|
||||||
<h5>Udostępnij:</h5>
|
<h5>Udostępnij:</h5>
|
||||||
{% post_to_facebook object_or_url %}
|
{% post_to_facebook object_or_url %}
|
||||||
{% post_to_linkedin object_or_url %}
|
{% post_to_linkedin object_or_url %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="resultContainerSapce"><br></div>
|
||||||
|
<button class="defaultButton"><a href="{% url 'home' %}">Strona główna</a></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
18
trials/migrations/0016_test_completions.py
Normal file
18
trials/migrations/0016_test_completions.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.2.9 on 2022-04-16 12:20
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('trials', '0015_test_password'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='test',
|
||||||
|
name='completions',
|
||||||
|
field=models.IntegerField(default=0),
|
||||||
|
),
|
||||||
|
]
|
33
trials/migrations/0017_auto_20220416_1431.py
Normal file
33
trials/migrations/0017_auto_20220416_1431.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Generated by Django 3.2.9 on 2022-04-16 12:31
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('trials', '0016_test_completions'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='test',
|
||||||
|
name='difficulty_label',
|
||||||
|
field=models.IntegerField(default=0),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='test',
|
||||||
|
name='rating_label',
|
||||||
|
field=models.IntegerField(default=0),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='test',
|
||||||
|
name='total_percentage_scored_by_users',
|
||||||
|
field=models.IntegerField(default=0),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='test',
|
||||||
|
name='total_rating',
|
||||||
|
field=models.IntegerField(default=0),
|
||||||
|
),
|
||||||
|
]
|
18
trials/migrations/0018_test_rates_amount.py
Normal file
18
trials/migrations/0018_test_rates_amount.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.2.9 on 2022-04-16 13:22
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('trials', '0017_auto_20220416_1431'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='test',
|
||||||
|
name='rates_Amount',
|
||||||
|
field=models.IntegerField(default=0),
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.2.9 on 2022-04-16 13:23
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('trials', '0018_test_rates_amount'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='test',
|
||||||
|
old_name='rates_Amount',
|
||||||
|
new_name='rates_amount',
|
||||||
|
),
|
||||||
|
]
|
23
trials/migrations/0020_auto_20220416_1634.py
Normal file
23
trials/migrations/0020_auto_20220416_1634.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Generated by Django 3.2.9 on 2022-04-16 14:34
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('trials', '0019_rename_rates_amount_test_rates_amount'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='test',
|
||||||
|
old_name='rating_label',
|
||||||
|
new_name='avg_rating',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='test',
|
||||||
|
name='avg_difficulty',
|
||||||
|
field=models.FloatField(default=0.0),
|
||||||
|
),
|
||||||
|
]
|
17
trials/migrations/0021_remove_test_difficulty_label.py
Normal file
17
trials/migrations/0021_remove_test_difficulty_label.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Generated by Django 3.2.9 on 2022-04-16 14:36
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('trials', '0020_auto_20220416_1634'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='test',
|
||||||
|
name='difficulty_label',
|
||||||
|
),
|
||||||
|
]
|
@ -1,6 +1,7 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
from questions.models import Question
|
from questions.models import Question
|
||||||
|
from users.models import User
|
||||||
from .managers import TestManager
|
from .managers import TestManager
|
||||||
|
|
||||||
|
|
||||||
@ -22,7 +23,12 @@ class Test(models.Model):
|
|||||||
on_delete=models.CASCADE
|
on_delete=models.CASCADE
|
||||||
)
|
)
|
||||||
password = models.CharField(max_length=100, default="")
|
password = models.CharField(max_length=100, default="")
|
||||||
|
completions = models.IntegerField(default=0)
|
||||||
|
total_percentage_scored_by_users = models.IntegerField(default=0)
|
||||||
|
total_rating = models.IntegerField(default=0)
|
||||||
|
avg_rating = models.IntegerField(default=0)
|
||||||
|
rates_amount = models.IntegerField(default=0)
|
||||||
|
avg_difficulty = models.FloatField(default=0.0)
|
||||||
objects = TestManager()
|
objects = TestManager()
|
||||||
|
|
||||||
def get_score(self, answers):
|
def get_score(self, answers):
|
||||||
@ -45,7 +51,7 @@ class Test(models.Model):
|
|||||||
points += question.points
|
points += question.points
|
||||||
return points
|
return points
|
||||||
|
|
||||||
def get_maxscore(self, answers):
|
def get_maxscore(self):
|
||||||
"""
|
"""
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
@ -59,9 +65,6 @@ class Test(models.Model):
|
|||||||
]
|
]
|
||||||
"""
|
"""
|
||||||
points = 0
|
points = 0
|
||||||
# for answer in answers:
|
|
||||||
# question = self.questions.get(id=answer["question"])
|
|
||||||
# points += question.points
|
|
||||||
for question in self.questions.all():
|
for question in self.questions.all():
|
||||||
points += question.points
|
points += question.points
|
||||||
return points
|
return points
|
||||||
@ -69,6 +72,14 @@ class Test(models.Model):
|
|||||||
def question_count(self):
|
def question_count(self):
|
||||||
return Question.objects.filter(test_id=self.id).count()
|
return Question.objects.filter(test_id=self.id).count()
|
||||||
|
|
||||||
|
def get_author_name(self):
|
||||||
|
if self.created_by:
|
||||||
|
user = User.objects.get(email=self.created_by)
|
||||||
|
user_fullname = user.first_name + " " + user.last_name
|
||||||
|
else:
|
||||||
|
user_fullname = "SOITA"
|
||||||
|
return user_fullname
|
||||||
|
|
||||||
def name_and_passing_score(self):
|
def name_and_passing_score(self):
|
||||||
return {
|
return {
|
||||||
"name": self.name,
|
"name": self.name,
|
||||||
|
@ -1,7 +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, TestTemplateView, TestValidateAPIView, TestResultView, addTest, addQuestions, myTests, solvedTests, solvedTestsDetailed, EditTestTemplateView, deleteTest, AddQuestionToExistingTest, RemoveQuestionFromExistingTest, EditQuestionTemplateView, editName, editVisible, editPassword, TestPasswordTemplateView
|
from trials.views import TestModelViewSet, TestTemplateView, TestValidateAPIView, TestResultView, rateTest, addTest, addQuestions, myTests, solvedTests, solvedTestsDetailed, 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)
|
||||||
@ -11,6 +11,7 @@ urlpatterns = [
|
|||||||
path('<int:test_id>/password', TestPasswordTemplateView),
|
path('<int:test_id>/password', TestPasswordTemplateView),
|
||||||
path('<int:test_id>/mark', TestValidateAPIView.as_view()),
|
path('<int:test_id>/mark', TestValidateAPIView.as_view()),
|
||||||
path('<int:test_id>/result', TestResultView.as_view()),
|
path('<int:test_id>/result', TestResultView.as_view()),
|
||||||
|
path('<int:test_id>/rateTest', rateTest, name="rateTest"),
|
||||||
path('<int:test_id>/edit', EditTestTemplateView.as_view()),
|
path('<int:test_id>/edit', EditTestTemplateView.as_view()),
|
||||||
path('<int:test_id>/add-question', AddQuestionToExistingTest.as_view()),
|
path('<int:test_id>/add-question', AddQuestionToExistingTest.as_view()),
|
||||||
path('<int:test_id>/remove-question', RemoveQuestionFromExistingTest.as_view()),
|
path('<int:test_id>/remove-question', RemoveQuestionFromExistingTest.as_view()),
|
||||||
|
@ -301,6 +301,17 @@ def editPassword(request, test_id):
|
|||||||
return redirect(f'/tests/{test_id}/edit')
|
return redirect(f'/tests/{test_id}/edit')
|
||||||
|
|
||||||
|
|
||||||
|
def rateTest(request, test_id):
|
||||||
|
test = Test.objects.get(id=test_id)
|
||||||
|
rate = request.GET["rate"]
|
||||||
|
test.rates_amount += 1
|
||||||
|
test.total_rating += int(rate)
|
||||||
|
avg_rating = test.total_rating / test.rates_amount
|
||||||
|
test.avg_rating = int(avg_rating)
|
||||||
|
test.save()
|
||||||
|
return redirect(f'/tests/{test_id}/result')
|
||||||
|
|
||||||
|
|
||||||
class TestModelViewSet(viewsets.ModelViewSet):
|
class TestModelViewSet(viewsets.ModelViewSet):
|
||||||
queryset = Test.objects.all()
|
queryset = Test.objects.all()
|
||||||
serializer_class = TestSerializer
|
serializer_class = TestSerializer
|
||||||
@ -332,8 +343,8 @@ class TestTemplateView(TemplateView):
|
|||||||
def get_score(self, test: Test, answers):
|
def get_score(self, test: Test, answers):
|
||||||
return test.get_score(answers)
|
return test.get_score(answers)
|
||||||
|
|
||||||
def get_maxscore(self, test: Test, answers):
|
def get_maxscore(self, test: Test):
|
||||||
return test.get_maxscore(answers)
|
return test.get_maxscore()
|
||||||
|
|
||||||
def formatted_responses(self, unformatted_json):
|
def formatted_responses(self, unformatted_json):
|
||||||
formatted_response = list()
|
formatted_response = list()
|
||||||
@ -349,7 +360,7 @@ class TestTemplateView(TemplateView):
|
|||||||
def post(self, request, *args, **kwargs):
|
def post(self, request, *args, **kwargs):
|
||||||
test = Test.objects.get(id=kwargs.get("test_id"))
|
test = Test.objects.get(id=kwargs.get("test_id"))
|
||||||
score = self.get_score(test, self.formatted_responses(request.POST))
|
score = self.get_score(test, self.formatted_responses(request.POST))
|
||||||
max = self.get_maxscore(test, self.formatted_responses(request.POST))
|
max = self.get_maxscore(test)
|
||||||
status = score >= test.passing_score
|
status = score >= test.passing_score
|
||||||
# context = {
|
# context = {
|
||||||
# "status": self.PASSED.get(status, self.UNKNOWN),
|
# "status": self.PASSED.get(status, self.UNKNOWN),
|
||||||
@ -372,6 +383,21 @@ class TestTemplateView(TemplateView):
|
|||||||
user=request.user,
|
user=request.user,
|
||||||
test=test
|
test=test
|
||||||
)
|
)
|
||||||
|
test.completions += 1
|
||||||
|
test.total_percentage_scored_by_users += int(score / max * 100)
|
||||||
|
if test.completions >= 5:
|
||||||
|
test.avg_difficulty = float(test.total_percentage_scored_by_users) / float(test.completions)
|
||||||
|
if test.avg_difficulty > 90.0:
|
||||||
|
test.difficulty_label = 1
|
||||||
|
elif test.avg_difficulty > 75.0:
|
||||||
|
test.difficulty_label = 2
|
||||||
|
elif test.avg_difficulty > 50.0:
|
||||||
|
test.difficulty_label = 3
|
||||||
|
elif test.avg_difficulty > 25.0:
|
||||||
|
test.difficulty_label = 4
|
||||||
|
else:
|
||||||
|
test.difficulty_label = 5
|
||||||
|
test.save()
|
||||||
return HttpResponseRedirect(f'result')
|
return HttpResponseRedirect(f'result')
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user