Frage zu Zugang zu views - Sicherheit
Verfasst: Donnerstag 19. Januar 2023, 16:03
Die Lehrkraft kann sich nicht nur die ganze Arbeit der Lerngruppe anzeigen lassen (das war mein letztes Posting) sie kann auch die Ergebnisse jeder Schülerinnen /jedes Schüler aus seiner Gruppe anzeigen lassen (dazu gibt es 3 Möglichkeiten). Ich nehme mal als Beispiel das Protokoll. Bei Klick auf die entsprechende Anforderung übergebe ich die id der entsprechenden Schülerinnen / des entsprechenden Schülers, zB.: "...protokoll/152/". Auf diese Seite darf jetzt aber natürlich nur die Schülerinnen / der Schüler bzw deren Lehrkraft zuweisen und nicht irgendjeamn, der die ids ausprobiert. Je nachdem, wer zugreift, gibt es verschiedene Möglichkeiten: Der Lehrer darf z.B. seine eigenen Aufgaben löschen, die von Schülerinnen bzw. Schüler nicht. Dazu habe ich in jedem View (ich habe dieses Problem ja mehrmals) eine Abfrage eingebaut, die z.B. beim Protokoll so aussieht:
Ich habe jetzt keine Idee, ob das so sinnvoll ist, oder ob es möglicherweise eine einfachere Idee dazu gibt.
Vielleicht muss ich noch anmerken, dass die Lehrkraft (ich habe keine Lust, immer "die Lehrerin bzw. der Lehrer" zu schreiben kann auch selbst die Aufgaben ausprobieren und daher auch das Protokoll seiner eigenen Aufgaben anzeigen lassen.
(Bevor jetzt jemand schreibt, er benötigte mehr code - ich poste gerne mehr.)
Code: Alles auswählen
def protokoll(req, schueler_id=0):
if req.user.is_authenticated:
if User.objects.filter(pk=req.user.id, groups__name='Lehrer').exists():
lehrer = True
else:
lehrer = False
loeschen = False
if schueler_id == 0:
user = get_object_or_404(Profil, user_id = req.user.id)
if lehrer:
loeschen = True
else:
user = get_object_or_404(Profil, id = schueler_id)
protokoll = Protokoll.objects.filter(user=user).order_by('id').reverse()
...
Vielleicht muss ich noch anmerken, dass die Lehrkraft (ich habe keine Lust, immer "die Lehrerin bzw. der Lehrer" zu schreiben kann auch selbst die Aufgaben ausprobieren und daher auch das Protokoll seiner eigenen Aufgaben anzeigen lassen.
(Bevor jetzt jemand schreibt, er benötigte mehr code - ich poste gerne mehr.)