Page with popular and hard test. Icons in side menu

This commit is contained in:
Piotr Kopycki 2022-05-15 16:01:52 +02:00
parent f6445a18e4
commit c19d81a92c
15 changed files with 353 additions and 33 deletions

View File

@ -56,6 +56,7 @@ INSTALLED_APPS = [
"django_extensions",
"django_social_share",
'fontawesomefree',
"jquery",
"users",
"trials",

View File

@ -16,12 +16,14 @@ Including another URLconf
from django.contrib import admin
from django.urls import include
from django.urls import path
from .views import home, welcome, help
from .views import home, welcome, help, hard, popular
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns = [
path('', welcome, name='welcome'),
path('home', home, name='home'),
path('popular', popular, name='popular'),
path('hard', hard, name='hard'),
path('help', help, name='help'),
path('users/', include("users.urls")),
path('questions/', include("questions.urls")),

View File

@ -2,6 +2,7 @@ from django.shortcuts import render, redirect
from django.template import loader
from django.contrib.auth.decorators import login_required
from trials.models import Test
import operator
@login_required
@ -18,6 +19,20 @@ def home(request):
def help(request):
return render(request, 'help.html', )
@login_required
def popular(request):
context = {}
context['tests'] = Test.objects.filter(avg_rating__gt=0)
context['tests'] = sorted(context['tests'], key=operator.attrgetter('avg_rating'), reverse=True)
return render(request, 'popular.html', context)
@login_required
def hard(request):
context = {}
context['tests'] = Test.objects.filter(difficulty_label__gt=0)
context['tests'] = sorted(context['tests'], key=operator.attrgetter('difficulty_label'), reverse=True)
return render(request, 'hard.html', context)
def welcome(request):
return render(request, 'welcome.html')

21
static/script.js Normal file
View File

@ -0,0 +1,21 @@
//$(function() {
// $(".newQuestionSection" ).draggable().resizable();
//} );
var questionId = 1;
$('.addQuestionButton').click(function(){
console.log("REEEEEEEE")
// Clone extra box, and remove duplicate ids
let clone = $("#question-copy").clone().removeAttr("hidden");
clone.id = "question"- + ++questionId;
//clone.find("*").removeAttr("id");
clone.find("*").each(function() {
$(this).attr("id", "q" + questionId + "-" + $(this).attr("id"));
});
clone.find("input:radio").each(function() {
$(this).attr("name", questionId);
});
// append it to div
$('#canvas').append(clone);
});

View File

@ -1,6 +1,6 @@
.sidenav {
height: 100%;
width: 195px;
width: 215px;
position: fixed;
z-index: 1;
top: 0;
@ -44,7 +44,7 @@
}
.main {
margin-left: 190px;
margin-left: 215px;
padding: 0px 40px;
}
@ -515,6 +515,23 @@ background-color:#FF0B7E
width: 500px;
}
.newQuestionSection {
border-radius: 25px;
border: 2px solid #FF0B7E;
padding: 20px;
width: 750px;
height: 350px;
}
.questionSectionLabelText {
font-weight: bold;
font-size: 16px;
padding-bottom: 20px;
}
.addQuestionButton {
}
.editContainer {
overflow: scroll;
}

View File

@ -16,11 +16,14 @@
<body>
<div class="sidenav">
<a href="{% url 'home' %}">Strona główna</a>
<a href="{% url 'newTest' %}">Stwórz test</a>
<a href="{% url 'myTests' %}">Twoje testy</a>
<a href="{% url 'solvedTests' %}">Wyniki testów</a>
<a href="{% url 'help' %}">Pomoc</a>
<a href="{% url 'home' %}"><i class="fa-solid fa-house"></i> Strona główna</a>
<a href="{% url 'popular' %}"><i class="fa-solid fa-star"></i> Popularne </a>
<a href="{% url 'hard' %}"><i class="fa-solid fa-fire-flame-curved"></i> Trudne </a>
<a href="{% url 'home' %}"><i class="fa-solid fa-trophy"></i> Turnieje </a>
<br>
<a href="{% url 'newTest' %}"><i class="fa-solid fa-circle-plus"></i> Stwórz test</a>
<a href="{% url 'myTests' %}"><i class="fa-solid fa-note-sticky"></i> Twoje testy</a>
<a href="{% url 'solvedTests' %}"><i class="fa-solid fa-square-poll-horizontal"></i> Wyniki testów</a>
<p>Kategorie</p>
<a href="/category/JezykPolski">Język polski</a>
<a href="/category/JezykAngielski">Język angielski</a>
@ -34,14 +37,17 @@
<a href="/category/Historia">Historia</a>
<a href="/category/Inne">Inne</a>
<p>Konto</p>
<a href="/users/account">Ustawienia</a>
<a href="/users/logout">Wyloguj</a>
<a href="/users/account"><i class="fa-solid fa-gear"></i> Ustawienia</a>
<a href="{% url 'help' %}"><i class="fa-solid fa-circle-question"></i> Pomoc</a>
<a href="/users/logout"><i class="fa-solid fa-right-from-bracket"></i> Wyloguj</a>
</div>
<div id="content", name="content", class="main">
<div class="mainContainer">
{% block content %}
{% endblock %}
</div>
</div>
</body>
</html>

View File

@ -32,31 +32,31 @@
<div class="mainTestMetaLineLabels">
<div class="mainTestMetaLabels">
Trudność:
{% if test.avg_difficulty == 0.0 %}
{% if test.difficulty_label == 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 %}
{% elif test.difficulty_label == 1 %}
<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 %}
{% elif test.difficulty_label == 2 %}
<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 %}
{% elif test.difficulty_label == 3 %}
<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 %}
{% elif test.difficulty_label == 4 %}
<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>

View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>$Title$</title>
</head>
<body>
$END$
</body>
</html>

118
templates/hard.html Normal file
View File

@ -0,0 +1,118 @@
{% extends "base.html" %}
{% block title %}Główna{% endblock %}
{% block content %}
<h1>Najtrudniejsze testy:</h1>
{% for test in tests %}
<div class="mainTestContainer">
<div class="mainTestName">
{{test.name}}
{% if test.password != "" %}
<i class="fa-solid fa-lock locked" title="Test chroniony hasłem"></i>
{% endif %}
</div>
<div class="mainTestMeta">
<div class="mainTestMetaLine">
<div class="mainTestMetaInfoText">Kategoria: {{test.category}}</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.difficulty_label == 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.difficulty_label == 1 %}
<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.difficulty_label == 2 %}
<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.difficulty_label == 3 %}
<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.difficulty_label == 4 %}
<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 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.-->
<!-- </div>-->
<button><a href="/tests/{{test.id}}/password">Rozwiąż</a></button>
</div>
<br>
{% endfor %}
{% endblock %}

View File

@ -3,7 +3,7 @@
{% block title %}Główna{% endblock %}
{% block content %}
<h1>Rozwiąż jakiś test!</h1>
<h1>Najnowsze testy:</h1>
{% for test in tests %}
<div class="mainTestContainer">
<div class="mainTestName">
@ -26,31 +26,31 @@
<div class="mainTestMetaLineLabels">
<div class="mainTestMetaLabels">
Trudność:
{% if test.avg_difficulty == 0.0 %}
{% if test.difficulty_label == 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 %}
{% elif test.difficulty_label == 1 %}
<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 %}
{% elif test.difficulty_label == 2 %}
<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 %}
{% elif test.difficulty_label == 3 %}
<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 %}
{% elif test.difficulty_label == 4 %}
<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>

118
templates/popular.html Normal file
View File

@ -0,0 +1,118 @@
{% extends "base.html" %}
{% block title %}Główna{% endblock %}
{% block content %}
<h1>Najpopularniejsze testy:</h1>
{% for test in tests %}
<div class="mainTestContainer">
<div class="mainTestName">
{{test.name}}
{% if test.password != "" %}
<i class="fa-solid fa-lock locked" title="Test chroniony hasłem"></i>
{% endif %}
</div>
<div class="mainTestMeta">
<div class="mainTestMetaLine">
<div class="mainTestMetaInfoText">Kategoria: {{test.category}}</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.difficulty_label == 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.difficulty_label == 1 %}
<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.difficulty_label == 2 %}
<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.difficulty_label == 3 %}
<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.difficulty_label == 4 %}
<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 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.-->
<!-- </div>-->
<button><a href="/tests/{{test.id}}/password">Rozwiąż</a></button>
</div>
<br>
{% endfor %}
{% endblock %}

View File

@ -28,6 +28,7 @@ class Test(models.Model):
total_rating = models.IntegerField(default=0)
avg_rating = models.IntegerField(default=0)
rates_amount = models.IntegerField(default=0)
difficulty_label = models.IntegerField(default=0)
avg_difficulty = models.FloatField(default=0.0)
objects = TestManager()

View File

@ -19,6 +19,14 @@ class TestSerializer(serializers.ModelSerializer):
"questions",
"visible",
"category",
"created_by",
"completions",
"total_percentage_scored_by_users",
"total_rating",
"avg_rating",
"rates_amount",
"difficulty_label",
"avg_difficulty"
)
def create(self, validated_data):

View File

@ -1,7 +1,7 @@
from django.urls import path
from rest_framework.routers import DefaultRouter
from trials.views import TestModelViewSet, TestTemplateView, TestValidateAPIView, TestResultView, rateTest, addTest, addQuestions, myTests, solvedTests, solvedTestsDetailed, EditTestTemplateView, deleteTest, AddQuestionToExistingTest, RemoveQuestionFromExistingTest, EditQuestionTemplateView, editName, editVisible, editPassword, TestPasswordTemplateView
from trials.views import TestModelViewSet, TestTemplateView, TestValidateAPIView, TestResultView, rateTest, addTest, addTest2, addQuestions, myTests, solvedTests, solvedTestsDetailed, EditTestTemplateView, deleteTest, AddQuestionToExistingTest, RemoveQuestionFromExistingTest, EditQuestionTemplateView, editName, editVisible, editPassword, TestPasswordTemplateView
router = DefaultRouter(trailing_slash=False)
router.register("items", TestModelViewSet)

View File

@ -18,12 +18,12 @@ from django.template import loader
from django.template.loader import render_to_string, get_template
from django.http import HttpRequest
import requests
from django.contrib.auth.decorators import login_required
@login_required
def addTest(request):
return render(request, 'createTest.html')
def is_visible(visible):
if visible =="public":
return True
@ -144,14 +144,14 @@ class RemoveQuestionFromExistingTest(TemplateView):
Question.objects.get(id=request.POST["id"]).delete()
return redirect(f'/tests/{kwargs["test_id"]}/edit')
@login_required
def myTests(request):
context = {}
user = request.user.id
context['tests'] = Test.objects.filter(created_by=user)
return render(request, 'myTests.html', context)
@login_required
def solvedTests(request):
context = {}
user_id = request.user.id
@ -180,7 +180,7 @@ def solvedTests(request):
context['tests_lists'] = dict_with_lists_of_test_results
return render(request, 'solvedTests.html', context)
@login_required
def solvedTestsDetailed(request, test_id):
context = {}
solved_tests = SolvedTest.objects.filter(test__id=test_id)
@ -268,12 +268,12 @@ class EditQuestionTemplateView(TemplateView):
Question.objects.EditQuestion(question_id=question_id, name=description, answers=answers)
return redirect(f'/tests/{test}/edit')
@login_required
def deleteTest(request, test_id):
Test.objects.filter(id=test_id).delete()
return redirect('myTests')
@login_required
def editVisible(request, test_id):
new_visible = request.GET["visible"]
if new_visible == "public":
@ -285,6 +285,7 @@ def editVisible(request, test_id):
test.save()
return redirect(f'/tests/{test_id}/edit')
@login_required
def editName(request, test_id):
new_name = request.GET["name"]
test = Test.objects.get(id=test_id)
@ -292,7 +293,7 @@ def editName(request, test_id):
test.save()
return redirect(f'/tests/{test_id}/edit')
@login_required
def editPassword(request, test_id):
new_password = request.GET["password"]
test = Test.objects.get(id=test_id)
@ -300,7 +301,7 @@ def editPassword(request, test_id):
test.save()
return redirect(f'/tests/{test_id}/edit')
@login_required
def rateTest(request, test_id):
test = Test.objects.get(id=test_id)
rate = request.GET["rate"]
@ -401,6 +402,7 @@ class TestTemplateView(TemplateView):
return HttpResponseRedirect(f'result')
@login_required
def TestPasswordTemplateView(request, test_id):
test = Test.objects.get(id=test_id)
if test.password == "":
@ -411,6 +413,7 @@ def TestPasswordTemplateView(request, test_id):
return render(request, 'testPassword.html')
@login_required
def testView(request):
permission_classes = []
template_name = settings.BASE_DIR + f"/templates/generic_test.html"