Also zum Beginn des neuen Halbjahres, also am 1.2. werden alle Zähler der Schülerinnen und Schüler zurückgesetzt. Wenn sie sich jetzt anmelden und fleißig Aufgaben rechnen, sind die dann "weg" - das ist blöd. Aus diesem Grunde können sie jetzt im Januar wählen, ob sie jetzt schon mit dem neuen Schuljahr anfangen wollen. Wenn sie sich neu anmelden, funktioniert das wie gewünscht, die entsprechende Frage soll aber auch gestellt werden, wenn sie schon angemeldet sind.
Die Funktion, die aufgerufen wird, ist diese:
Code: Alles auswählen
def halbjahr_pruefen(req):
user = req.user.profil
heute = datetime.now()
if heute.month == 1 or heute.month == 6 or heute.month == 7: #Frage nach neuem Halbjahr
next_schuljahr, next_halbjahr = name_next_halbjahr()
if user.halbjahr == next_halbjahr and user.schuljahr == next_schuljahr: #user arbeitet schon am nächsten halbjahr
pass
else:
if user.voreinst.get("no_halbjahr", "False") == "False": #überprüft, ob Frage nicht gestellt werden soll
if heute.month == 1:
monat = "Juni"
else:
monat = "Januar"
context = {'monat' : monat}
print(context)
return render(req, 'naechstes_halbjahr.html', context)
else: #Überprüfung, ob Halbjahr aktuell ist
schuljahr, halbjahr = name_halbjahr()
if user.halbjahr == halbjahr and user.schuljahr == schuljahr:
pass
else: #falls nicht
user.halbjahr = halbjahr
user.schuljahr = schuljahr
user.save()
return redirect(neues_halbjahr)
if User.objects.filter(pk=req.user.id, groups__name='Lehrer').exists():
return redirect('index')
return redirect('uebersicht')
Code: Alles auswählen
{% extends 'auswahl.html' %}
{% block content %}
<body>
<h2>Neues Halbjahr beginnen?</h2>
<h2>Wir haben jetzt {% now "F" %} - bald gibt es Zeugnisse. Sollen deine Aufgaben, die du ab jetzt machst, schon für das nächste Schulhalbjahr zählen?</h2>
Diese Wahl kannst du nicht rückgängig machen. Bestätige sie also bitte, indem du hier "ja" eingibst:
<br>
<br>
<form method="POST" action="{% url 'naechstes_halbjahr' %}">
{% csrf_token %}
<form>
<label> neues Schulhalbjahr? </label>
<input id="neu" name="neu" type="text">
<br>
<br>
<input type="Checkbox" name="keinefrage">
<label> Nein, ich möchte <b>nicht</b> das neue Halbjahr anfangen und <b>möchte auch bis zum nächsten {{monat}} nicht mehr danach gefragt werden!</b> </label>
<br>
<br>
<input type="submit" value="weiter">
</form>
</body>
{% endblock %}
</html>
Code: Alles auswählen
def anmelden(req):
titel = "Anmelden"
if req.method == 'POST':
#get_expire_at_browser_close()
form = Login_Form(req.POST)
if form.is_valid ():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(req, username=username, password=password)
cookie_loeschen = req.POST.get('cookie_loeschen')
if cookie_loeschen == 'on':
req.session.set_expiry(0)
if user is not None:
login(req, user)
return halbjahr_pruefen(req)
titel = "Username und/oder Passwort stimmen nicht"
form = Login_Form()
context = {'form' : form, 'titel': titel}
return render(req, 'anmelden.html', context)
Hier noch der Code der beim Klick auf "index" ausgeführt wird:
Code: Alles auswählen
def index(req):
anz_angemeldet = Profil.objects.count()
anz_lehrer = User.objects.filter(groups__name="Lehrer").count()
anz_aufg = Protokoll.objects.count()
if req.user.is_authenticated and not req.user.is_superuser:
halbjahr_pruefen(req)
if User.objects.filter(pk=req.user.id, groups__name='Lehrer').exists():
lehrer = True
else:
lehrer = False
return render(req, 'index.html', context= {'lehrer': lehrer, 'anz_angemeldet': anz_angemeldet, 'anz_lehrer': anz_lehrer, 'anz_aufg': anz_aufg})