Ich kann das gesamte Duell mit allen Einträgen löschen (dazu habe ich einen view).
Code: Alles auswählen
def duell_loeschen(req):
gruppe = Lerngruppe.objects.get(pk = req.session.get('gruppe_id'))
gruppen = Lerngruppe.objects.filter(lehrer=req.user)
if gruppe.lehrer != req.user:
return HttpResponse("Zugriff verweigert")
try:
duellanten = Duellant.objects.filter(profil__gruppe = gruppe)
except:
messages.error(req, "Diese Duellgruppe existiert nicht")
return render(req, 'lehrer/meine_gruppen.html', context={'gruppen': gruppen,})
if req.method == 'POST':
nur_punkte = req.POST.get('nur_punkte', 'off')
bestaetigt = req.POST.get('bestaetigt', 'off')
if bestaetigt == "on":
if nur_punkte == "on":
...
else:
duellanten.all().delete()
else:
messages.error(req, "Löschen wurde abgebrochen!")
return render(req, 'lehrer/meine_gruppen.html', context={'gruppen': gruppen,})
return render(req, 'duell_loeschen.html' , context={'titel': "Duellgruppe löschen", 'gruppe' : gruppe})
Wenn ich den ausführe und im Admintool kontrolliere gibt es keine Duellanten mehr.
Wenn ich aber das Duell neu starte mit:
Code: Alles auswählen
def duell_uebersicht(req, gruppe_id):
gruppe = get_object_or_404(Lerngruppe, pk=gruppe_id)
if gruppe.lehrer != req.user and not req.user.is_superuser:
return HttpResponse("Zugriff verweigert")
profil = get_object_or_404(Profil, user=req.user)
profil.duell_gruppe = gruppe_id
profil.save()
duellanten = Duellant.objects.filter(profil__gruppe=gruppe_id)
for duellant in duellanten:
duellant.punkte +=duellant.punkte_spiel
duellant.punkte_spiel = 0
if duellant.spiele != 0:
duellant.pps = duellant.punkte/duellant.spiele
duellant.save()
schueler_liste = Profil.objects.filter(gruppe=gruppe).order_by("user__profil__vorname")
for schueler in schueler_liste:
duellant, created = Duellant.objects.get_or_create(profil = schueler)
if created:
duellant.name = schueler.vorname
duellant.save()
dubletten = duellanten.values('name').annotate(dubletten=Count('name')).filter(dubletten__gt=1)
dubletten_liste = []
if not dubletten:
pass
else:
for dublette in dubletten:
dubletten_liste.append(dublette["name"])
leerstellen_liste = []
for duellant in duellanten:
if " " in duellant.name:
leerstellen_liste.append(duellant.name)
duellanten = duellanten.filter(profil__gruppe = gruppe).order_by("liga", "platz", "profil")
duell_rang(gruppe.id)
if req.method == 'POST':
IDs = list(req.POST.getlist('ID'))
for duellant in duellanten:
duellant.abwesend = True if str(duellant.id) in IDs else False
duellant.save()
req.session['gruppe_id'] = gruppe_id
context={'gruppe_id': gruppe_id, 'gruppe': gruppe, 'duellanten': duellanten, 'dubletten_liste': ", ".join(dubletten_liste), 'leerstellen_liste': ", ".join(leerstellen_liste),'titel': "Schülerdaten ändern"}
return render(req, 'duell_uebersicht.html', context)
... sind alle aus der Gruppe wieder da.