This commit is contained in:
vale981 2014-04-13 10:33:29 +02:00
parent a7c5fb593b
commit 590b71eb92
13 changed files with 267 additions and 110 deletions

4
.idea/encodings.xml generated
View file

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" /> <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false">
<file url="PROJECT" charset="UTF-8" />
</component>
</project> </project>

Binary file not shown.

View file

@ -7,7 +7,10 @@ urlpatterns = patterns('',
# Examples: # Examples:
(r'^quiz/', include('fs_quiz.urls')), (r'^quiz/', include('fs_quiz.urls')),
# url(r'^blog/', include('blog.urls')), # url(r'^blog/', include('blog.urls')),
(r'^login/', 'fahrschule_vale981.views.login'),
(r'^logout/', 'fahrschule_vale981.views.logout_view'),
(r'^auth/', 'fahrschule_vale981.views.auth_view'),
(r'^fehler/', 'fahrschule_vale981.views.error'),
url(r'^admin/', include(admin.site.urls)), url(r'^admin/', include(admin.site.urls)),
) )

View file

@ -3,4 +3,5 @@ from django.contrib import admin
# Register your models here. # Register your models here.
from fs_quiz.models import * from fs_quiz.models import *
admin.site.register(Frage) admin.site.register(Frage)
admin.site.register(Quiz) admin.site.register(Quiz)
admin.site.register(Antwort)

2
fs_quiz/forms.py Normal file
View file

@ -0,0 +1,2 @@
from django import forms
from fs_quiz.models import *

View file

@ -1,19 +1,23 @@
from django.db import models from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Quiz(models.Model) : class Quiz(models.Model) :
title = models.CharField(max_length=60, title = models.CharField(max_length=60,
blank=False, blank=False,
verbose_name="Titel"
) )
description = models.TextField(blank=True, description = models.TextField(blank=True,
help_text="a description of the quiz", help_text="Die Beschreibung des Quiz",
verbose_name="Beschreibung"
) )
class Admin: class Admin:
pass pass
def __unicode__(self): def __unicode__(self):
return self.title return self.title
def __str__(self): # __unicode__ on Python 2
return self.title
class Frage(models.Model): class Frage(models.Model):
@ -21,14 +25,51 @@ class Frage(models.Model):
content = models.CharField(max_length=1000, content = models.CharField(max_length=1000,
blank=False, blank=False,
help_text="Enter the question text that you want displayed", verbose_name='Frage Text',
verbose_name='Question',
) )
class Admin: class Admin:
pass pass
def __unicode__(self): def __unicode__(self):
return self.content return self.content
def __str__(self): # __unicode__ on Python 2
return self.content
class Antwort(models.Model):
frage = models.ManyToManyField(Frage, blank=False, )
content = models.CharField(max_length=1000,
blank=False,
help_text="Text der Antwort",
verbose_name='Antwort Text',
)
richtig = models.BooleanField(blank=True)
def __unicode__(self):
return self.content
def __str__(self): # __unicode__ on Python 2
return self.content
def get_related_to(self, status):
return self.related_to.filter(
from_people__status=status,
from_people__to_person=self)
class Admin:
pass
class Results:
quiz=models.ManyToManyField(Quiz, blank=True, )
frage=models.ManyToManyField(User, blank=True, )
user=models.ManyToManyField(User, blank=True, )
richtig = models.BooleanField(blank=True)
choice = models.ManyToManyField(Antwort)

View file

@ -6,5 +6,6 @@ urlpatterns = patterns('',
url(r'^all/', 'fs_quiz.views.quizes', name='home'), url(r'^all/', 'fs_quiz.views.quizes', name='home'),
url(r'^get/(?P<quiz_id>\d+)$', 'fs_quiz.views.quiz', name='home'), url(r'^get/(?P<quiz_id>\d+)$', 'fs_quiz.views.quiz', name='home'),
url(r'^check/', 'fs_quiz.views.check_view', name='check'),
) )

View file

@ -1,9 +1,14 @@
from django.shortcuts import render_to_response from django.shortcuts import render_to_response
#from django.http import HttpResponse from django.http import HttpResponseRedirect
#from django.template.loader import get_template #from django.template.loader import get_template
#from django.template import Context #from django.template import Context
#from django.views.generic.base import TemplateView #from django.views.generic.base import TemplateView
from django.core.context_processors import csrf
from fs_quiz.models import * from fs_quiz.models import *
from fs_quiz.forms import *
from fs_quiz.forms import Results
from django.forms.models import modelformset_factory
from django.contrib import auth
def quizes(request): def quizes(request):
@ -15,9 +20,21 @@ def quizes(request):
return render_to_response('quizzes.html', return render_to_response('quizzes.html',
{'quizes': Quiz.objects.all(), {'quizes': Quiz.objects.all(),
'hg': height, 'hg': height,
'hg_m': height_menu}) 'hg_m': height_menu,
'user': request.user})
def quiz(request, quiz_id=1): def quiz(request, quiz_id=1):
cs = {}
cs.update(csrf(request))
# AuthorFormSet = modelformset_factory(Results, form=ResultForm)
# if request.method == 'POST':
# formset = AuthorFormSet(request.POST, request.FILES)
# if formset.is_valid():
# formset.save()
# # do something.
# else:
# formset = AuthorFormSet(queryset=Frage.objects.filter(quiz=quiz_id))
height=75*Frage.objects.count() height=75*Frage.objects.count()
height_menu = height + 10 height_menu = height + 10
@ -26,11 +43,24 @@ def quiz(request, quiz_id=1):
height_menu = height height_menu = height
len_quiz = len(Quiz.objects.get(id=quiz_id).title) len_quiz = len(Quiz.objects.get(id=quiz_id).title)
cs.update({'quiz': Quiz.objects.get(id=quiz_id),
return render_to_response('quiz.html',
{'quiz': Quiz.objects.get(id=quiz_id),
'Frage': Frage.objects.filter(quiz=quiz_id), 'Frage': Frage.objects.filter(quiz=quiz_id),
'len': len_quiz, 'len': len_quiz,
'hg': height, 'hg': height,
'hg_m': height_menu}) 'hg_m': height_menu,
'user': request.user,
'aw': Antwort.objects.all()})
return render_to_response('quiz.html', cs)
def check_view(request):
check = request.POST.get('aw_check', '')
user = request.POST.get('user_log', '')
frage = request.POST.get('frage', '')
antwort = request.POST.get('antwort', '')
richtig = request.POST.get('richtig', '')
quiz_get = request.POST.get('quiz', '')
res = Results(quiz=quiz_get, frage=frage, user=user, richtig=richtig, choice=check)
res.save()
return HttpResponseRedirect('/quiz/all/')

View file

@ -1,68 +1,75 @@
body{
margin: 0;
padding: 0;
border: 0;
overflow: hidden;
height: 100%;
max-height: 100%;
}
#main{ #framecontent{
position: relative; position: absolute;
float:right; top: 0;
left: 100px; bottom: 0;
left: 0;
width: 150px; /*Width of frame div*/
height: 100%;
overflow: hidden; /*Disable scrollbars. Set to "scroll" to enable*/
background: navy;
color: white;
}
#maincontent{
position: fixed;
top: 0;
left: 150px; /*Set left value to WidthOfFrameDiv*/
right: 0;
bottom: 0;
overflow: auto;
background: #fff;
}
.innertube{
margin: 15px; /*Margins for inner DIV inside each DIV (to provide padding)*/
}
.men_div:hover{
background-color: dodgerblue;
}
* html body{ /*IE6 hack*/
padding: 0 0 0 200px; /*Set value to (0 0 0 WidthOfFrameDiv)*/
}
* html #maincontent{ /*IE6 hack*/
height: 100%;
width: 100%;
}
#men{
font-family: 'Denk One', sans-serif;
font-size: 24px;
color: lightgrey;
margin-left: 15px;
}
#men:link {color:white; text-decoration:none;} /* unvisited link */
#men:visited {color: #ffffff;} /* visited link */
#men:hover {color:white;} /* mouse over link */
#main_link{
font-family: "Denk One";
color: dodgerblue;
text-decoration: none;
font-size: 20px;
} }
#main_content{ #main_content{
margin-top: -10px; margin-top: -3.4%;
position: relative;
left:10px;
top: -10px;
width:96%;
} }
#frage{
#main_link{ font-family: "Tauri";
line-height:150%; color: dodgerblue;
font-family: Calibri;
font-size: 15px;
text-decoration: none;
color: #0066CC;
font-family: Futura, "Trebuchet MS", Arial, sans-serif;
widht: 81.9%;
}
#main_link:hover{
text-decoration: underline; text-decoration: underline;
color: #0099FF; font-size: 20px;
}
.mainHead{ }
text-align: center;
background-color: #0099FF;
width:100%;
font-size:30px;
margin-top:0px;
font-family: Futura, "Trebuchet MS", Arial, sans-serif;
}
#menu{
position: absolute;
float:right;
}
#men:hover{
background-color: #0066CC;
text-decoration: none;
}
#men{
margin-left:-40px;
width: 100px;
text-align: center;
}
body{
width: 60%;
position: absolute;
left: 21.6%;
box-shadow: 0px 0px 10px black;
background-color: hsla(30,40%,90%,0.5);
}
#title_20{
font-size: 10px;
}

6
templates/fehler.html Normal file
View file

@ -0,0 +1,6 @@
{% extends 'quizzes.html' %}
{% block main %}
<p class="error">Fehler, bitte versuchen sie es nochmal! </p>
{% endblock %}

14
templates/login.html Normal file
View file

@ -0,0 +1,14 @@
{% extends 'quizzes.html' %}
{% block content %}
{% if form.errors %}
<p class="error">Benutzernahme oder Passwort falsch!</p>
{% endif %}
<form action="/auth/" method="post">{% csrf_token %}
<label for="username">Benutzer:</label>
<input type="text" name="username" value="" id="username">
<label for="password">Passwort:</label>
<input type="password" name="password" value="" id="password">
<input type="submit" value="Login" />
</form>
{% endblock %}

View file

@ -17,14 +17,38 @@
{% block main %} {% block main %}
{% if Frage.count == 0 %} {% if Frage.count == 0 %}
<br> <br>
<h1 id="main_link" align="center">Keine Fragen vorhanden!</h1> <h1 id="main_link" style="text-align: center" align="center">Keine Fragen vorhanden!</h1>
{% endif %} {% endif %}
<br> <ol>
{% for Frage in Frage %} {% for Frage in Frage %}
{{Frage.content}}<br> <li><div id="frage">{{Frage.content}}</div></li>
{% comment %}<form method="post" action="">
{{ formset }}
</form>{% endcomment %}
{% for aw in aw %}
{% if aw.frage.get == Frage %}
<form action="/quiz/check/" method="post">{% csrf_token %}
<label for="aw_check">{{ aw.content }}</label>
<input type="checkbox" name="aw_check" id="aw_check">
<input type="hidden" name="user_log" value="{{ user.get }}">
<input type="hidden" name="frage" value="{{ Frage }}">
<input type="hidden" name="antwort" value="{{ aw }}">
<input type="hidden" name="quiz" value="{{ quiz }}">
{% if aw.richtig %}
<input type="hidden" name="richtig" value=True>
{% else %}
<input type="hidden" name="richtig" value=False>
{% endif %}
<br><input type="submit" value="Abgeben" />
{% endif %}
{% endfor %} {% endfor %}
{% endfor %}
</form></ol>
{% endblock %} {% endblock %}
</html> </html>

View file

@ -1,42 +1,63 @@
<!DOCTYPE html>
<html lang="en"> <!--Force IE6 into quirks mode with this comment tag-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<title>Fahrschule Examiner 0.1</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Fahrschul examiner...</title>
<script type="text/javascript">
WebFontConfig = {
google: { families: [ 'Denk+One::latin', 'Tauri::latin', 'Vampiro+One::latin' ] }
};
(function() {
var wf = document.createElement('script');
wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
'://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
wf.type = 'text/javascript';
wf.async = 'true';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(wf, s);
})(); </script>
{% load staticfiles %} {% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'css/quizz.css' %}"/> <link rel="stylesheet" type="text/css" href="{% static 'css/quizz.css' %}"/>
</head> </head>
<body> <body>
<div id="container"> <div id="framecontent">
<div class="innertube_men">
<div class="mainHead">
{% block header %}
Quiz Übersicht
{% endblock %}
</div>
{% block menu %} {% block menu %}
<div id="menu" style="background-color:#0099FF;height:{{ hg_m }}px;width:16%;"> <div class="men_div" style="margin-top: 15px;">
<ul> <a id="men" href="/quiz/all">Übersicht</a>
<div id="men"> </div>
<a href="/quiz/all">Übersicht</a> <div class="men_div">
<a id="men" href="/admin">Admin</a>
</div>
{% if user.is_authenticated %}
<div class="men_div">
<a href="/logout/" id="men"> Logout</a>
</div> </div>
<div id="men"> {% else %}
<a href="/admin">Admin</a> <div class="men_div">
<a href="/login/" id="men"> Login</a>
</div> </div>
<div id="men"> {% endif %}
Login
</div>
</ul>
</div>
{% endblock %} {% endblock %}
</div>
</div>
<div id="main" style="height:{{ hg }}px;float:left;">
{% block main %} <div id="maincontent">
<div class="innertube">
{% block content %}
{% if user.is_authenticated %}
{% block main %}
<br> <br>
<div id="main_content"> <div id="main_content">
{% if quizes.count == 0 %} {% if quizes.count == 0 %}
<h1 id="main_link" align="center">Keine Fragebogen vorhanden!</h1> <h1 id="main_link" align="center">Keine Fragebogen vorhanden!</h1>
@ -49,15 +70,20 @@
<a id="main_link" href="/quiz/get/{{ quiz.id }}">{{ quiz.title }}</a> <a id="main_link" href="/quiz/get/{{ quiz.id }}">{{ quiz.title }}</a>
<br> <br>
{{ quiz.description }}<br> {{ quiz.description }}<br>
</li> </li><br>
{% endfor %} {% endfor %}
</ol> </ol>
</div> </div>
{% endblock %} {% endblock %}
</div> {% else %}
<h1 id="main_link" align="center">Sie sind nicht angemeldet! Bitte <a href="/login">einloggen!</a> </h1>
{% endif %}
{% endblock %}
</div> </div>
<div id="footer" style="background-color:#0099FF;clear:both;text-align:center;"> </div>
Copyright © Valentin Boettcher
</div>
</body> </body>
</html> </html>