Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion account/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ def testL0_change_not_admin(self):
request = self.factory.patch(self.base_url, data=request_data, format="json")
force_authenticate(request, User.objects.get(username="testuser"))
res = self.view(request, uid=2)
self.assertEqual(res.status_code, status.HTTP_204_NO_CONTENT)
self.assertEqual(res.status_code, status.HTTP_403_FORBIDDEN)

target = User.objects.get(id=2)
self.assertEqual(target.is_active, ac_data["is_active"])
Expand Down
24 changes: 20 additions & 4 deletions account/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,15 +137,31 @@ def post(self, request):
def patch(self, request, uid):
data = request.data
user = get_object_or_404(User, id=uid)

if not request.user.has_perm("account.change_user"):
if request.user.id != user.id:
return Response({
"detail": "You have no permission to change this user"
}, status=status.HTTP_403_FORBIDDEN)

data.pop("is_active", None)
data.pop("is_staff", None)
data.pop("is_superuser", None)

request_is_active = data.get("is_active")
request_is_staff = data.get("is_staff")
request_is_superuser = data.get("is_superuser")

if request_is_active != None and request_is_active != user.is_active:
return Response({
"detail": "You have no permission to change this user"
}, status=status.HTTP_403_FORBIDDEN)

if request_is_staff != None and request_is_staff != user.is_active:
return Response({
"detail": "You have no permission to change this user"
}, status=status.HTTP_403_FORBIDDEN)

if request_is_superuser != None and request_is_superuser != user.is_superuser:
return Response({
"detail": "You have no permission to change this user"
}, status=status.HTTP_403_FORBIDDEN)

us = AccountSerializer(user, data=data, partial=True)
us.is_valid(raise_exception=True)
Expand Down
2 changes: 0 additions & 2 deletions problem/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,10 @@ class ProblemDescriptionSerializer(serializers.ModelSerializer):
class Meta:
model = Problem
fields = [
"pid",
"description",
]

depth = 0
read_only_fields = ["id"]

class TagSerializer(serializers.ModelSerializer):

Expand Down
1 change: 0 additions & 1 deletion problem/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,6 @@ def get(self, request):
ts = TagSerializer(queryset, many=True)

return Response({
"detail": "Success",
"count": queryset.count(),
"res": ts.data
}, status=status.HTTP_200_OK)