Merge branch 'feature/post-test-answers' of https://git.wmi.amu.edu.pl/s470629/SOITA into feature/post-test-answers

This commit is contained in:
Hubert Jankowski 2022-01-17 16:45:29 +01:00
commit ecad16aa81
5 changed files with 139 additions and 3 deletions

View File

@ -0,0 +1,46 @@
{% extends "base.html" %}
{% load rest_framework %}
{% block title %}New Test{% endblock %}
{% block content %}
<div class="newContainer">
<form method="post">
<h1>Add questions</h1>
{% for i in 1|range:4 %}
<h2>Question {{i}}</h2>
<label for="desc">Description: </label>
<input id="desc" type="text" name="desc">
<br>
<br>
<label for="ans1">Answer 1: </label>
<input id="ans1" type="text" name="ans1">
<br>
<br>
<label for="ans2">Answer 2: </label>
<input id="ans2" type="text" name="ans2">
<br>
<br>
<label for="ans3">Answer 3: </label>
<input id="ans3" type="text" name="ans3">
<br>
<br>
<label for="ans4">Answer 4: </label>
<input id="ans4" type="text" name="ans4">
<br>
<br>
<label for="category">Category: </label>
<select name="category" id="category">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<br>
<br>
{% endfor %}
<input type="submit" value="Add questions">
</form>
</div>
{% endblock %}

View File

@ -13,7 +13,7 @@
<body> <body>
<div class="sidenav"> <div class="sidenav">
<a href="/home">Home</a> <a href="/home">Home</a>
<a href="/test/create">Create test</a> <a href="{% url 'newTest' %}">Create test</a>
<a href="/users/tests">Your tests</a> <a href="/users/tests">Your tests</a>
<p>Categories</p> <p>Categories</p>
<a href="/category/JezykPolski">Język polski</a> <a href="/category/JezykPolski">Język polski</a>

41
templates/createTest.html Normal file
View File

@ -0,0 +1,41 @@
{% extends "base.html" %}
{% load rest_framework %}
{% block title %}New Test{% endblock %}
{% block content %}
<div class="newContainer">
<form method="post">
<h1>Create test</h1>
<label for="name">Name: </label>
<input id="name" type="text" name="name" value="New test">
<br>
<br>
<label for="category">Category: </label>
<select name="category" id="category">
<option value="JezykPolski">Język Polski</option>
<option value="JezykAngielski">Język Angielski</option>
<option value="JezykNiemiecki">Język Niemiecki</option>
<option value="Matematyka">Matematyka</option>
<option value="Informatyka">Informatyka</option>
<option value="Fizyka">Fizyka</option>
<option value="Chemia">Chemia</option>
<option value="Biologia">Biologia</option>
<option value="Geografia">Geografia</option>
<option value="Historia">Historia</option>
</select>
<br>
<br>
<label for="questions">Number of questions: </label>
<input id="questions" type="number" name="questions" value="10">
<br>
<br>
<label for="passing">Passing score: </label>
<input id="passing" type="number" name="passing" value="5">
<br>
<br>
<input type="submit" value="Add questions">
</form>
</div>
{% endblock %}

View File

@ -4,7 +4,7 @@ from rest_framework.routers import DefaultRouter
from trials.views import TestModelViewSet from trials.views import TestModelViewSet
from trials.views import TestTemplateView from trials.views import TestTemplateView
from trials.views import TestValidateAPIView from trials.views import TestValidateAPIView
from trials.views import TestResultView from trials.views import TestResultView, addTest, addQuestions
router = DefaultRouter(trailing_slash=False) router = DefaultRouter(trailing_slash=False)
router.register("items", TestModelViewSet) router.register("items", TestModelViewSet)
@ -12,7 +12,9 @@ router.register("items", TestModelViewSet)
urlpatterns = [ urlpatterns = [
path('<int:test_id>/show', TestTemplateView.as_view()), path('<int:test_id>/show', TestTemplateView.as_view()),
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('add/test', addTest, name="newTest"),
path('add/questions', addQuestions, name="addQuestions")
] ]
urlpatterns += router.urls urlpatterns += router.urls

View File

@ -6,10 +6,57 @@ from rest_framework.response import Response
from trials.models import Test from trials.models import Test
from trials.serializers import TestSerializer from trials.serializers import TestSerializer
from django.conf import settings from django.conf import settings
from django.shortcuts import render, redirect
from django import template
from django.http import HttpResponseRedirect, HttpResponse from django.http import HttpResponseRedirect, HttpResponse
from django.template import loader from django.template import loader
from django.template.loader import render_to_string, get_template from django.template.loader import render_to_string, get_template
register = template.Library()
@register.filter()
def range(min=0):
return range(min)
def addTest(request):
if request.POST:
# TODO pass test meta do addQuestions view and then create object?
# form = RegistrationForm(request.POST)
# if form.is_valid():
# User.objects.create(
# email=form.cleaned_data["email"],
# first_name=form.cleaned_data["first_name"],
# last_name=form.cleaned_data["last_name"],
# password=form.cleaned_data["password1"]
# )
# return redirect('register_success')
# else:
# context['registration_form'] = form
# Instead of context:
#request.session['questNum'] = range(1, 4)
return redirect('addQuestions')
return render(request, 'createTest.html')
def addQuestions(request):
if request.POST:
pass
# TODO create test object?
# form = RegistrationForm(request.POST)
# if form.is_valid():
# User.objects.create(
# email=form.cleaned_data["email"],
# first_name=form.cleaned_data["first_name"],
# last_name=form.cleaned_data["last_name"],
# password=form.cleaned_data["password1"]
# )
# return redirect('register_success')
# else:
# context['registration_form'] = form
return render(request, 'addQuestions.html')
class TestModelViewSet(viewsets.ModelViewSet): class TestModelViewSet(viewsets.ModelViewSet):
queryset = Test.objects.all() queryset = Test.objects.all()