Skip to content

Commit

Permalink
Merge pull request #317 from SELab-2/backend_extras
Browse files Browse the repository at this point in the history
Permissies aanpassen
  • Loading branch information
LGDTimtou authored May 23, 2024
2 parents 2b285c9 + 14518fa commit cceb5e4
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 34 deletions.
25 changes: 3 additions & 22 deletions api/serializers/groep.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,9 @@ def update(self, instance, validated_data):
Groep: De bijgewerkte groep.
"""
students_data = validated_data.pop("studenten", instance.studenten.all())
new_project = validated_data.get("project", instance.project)
validate_students(students_data, new_project, current_group=instance)
validate_project(instance, new_project)
validate_groep_grootte(students_data, new_project)
validated_data.pop("project", instance.project)
validate_students(students_data, instance.project, current_group=instance)
validate_groep_grootte(students_data, instance.project)

super().update(instance=instance, validated_data=validated_data)
instance.studenten.set(students_data)
Expand All @@ -62,24 +61,6 @@ def update(self, instance, validated_data):
return instance


def validate_project(instance, new_project):
"""
Valideert of het project van een groep niet kan worden aangepast.
Args:
instance: De huidige instantie van het project.
new_project: Het nieuwe project waaraan de groep wil worden gekoppeld.
Raises:
serializers.ValidationError: Wordt opgegooid als het project van een groep wordt aangepast.
"""

if instance.project != new_project:
raise serializers.ValidationError(
"Het project van een groep kan niet aangepast worden"
)


def validate_students(students_data, project, current_group=None):
"""
Controleert of de opgegeven gebruikers studenten zijn en of ze al in een andere groep voor dit project zitten.
Expand Down
23 changes: 11 additions & 12 deletions api/views/groep.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from api.models.groep import Groep
from api.serializers.groep import GroepSerializer
from api.utils import has_permissions, contains
from api.utils import has_permissions


@api_view(["GET", "POST"])
Expand Down Expand Up @@ -78,17 +78,16 @@ def groep_detail(request, id, format=None):
serializer = GroepSerializer(groep)
return Response(serializer.data)

if has_permissions(request.user) or contains(groep.studenten, request.user):
if request.method in ["PUT", "PATCH"]:
if request.method == "PUT":
serializer = GroepSerializer(groep, data=request.data)
else:
serializer = GroepSerializer(groep, data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

if request.method in ["PUT", "PATCH"]:
if request.method == "PUT":
serializer = GroepSerializer(groep, data=request.data)
else:
serializer = GroepSerializer(groep, data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

if has_permissions(request.user):
if request.method == "DELETE":
groep.delete()
Expand Down

0 comments on commit cceb5e4

Please sign in to comment.