Skip to content

Commit

Permalink
Enforce single owner per project
Browse files Browse the repository at this point in the history
  • Loading branch information
jjnesbitt committed Oct 1, 2024
1 parent 305f0b2 commit 448d070
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
5 changes: 2 additions & 3 deletions uvdat/core/models/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class Project(models.Model):
@transaction.atomic()
def set_permissions(
self,
owner: list[User] | None = None,
owner: User,
collaborator: list[User] | None = None,
follower: list[User] | None = None,
):
Expand All @@ -28,8 +28,7 @@ def set_permissions(
).delete()

# Assign new perms
for user in owner or []:
assign_perm('owner', user, self)
assign_perm('owner', owner, self)
for user in collaborator or []:
assign_perm('collaborator', user, self)
for user in follower or []:
Expand Down
9 changes: 5 additions & 4 deletions uvdat/core/rest/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,11 @@ def get_center(self, obj):
return [obj.default_map_center.y, obj.default_map_center.x]

def get_owner(self, obj):
users = get_users_with_perms(obj, only_with_perms_in=['owner'])
if users.count() == 0:
return None
return UserSerializer(users.first()).data
users = list(get_users_with_perms(obj, only_with_perms_in=['owner']))
if len(users) != 1:
raise Exception('Project must have exactly one owner')

return UserSerializer(users[0]).data

def get_collaborators(self, obj):
users = get_users_with_perms(obj, only_with_perms_in=['collaborator'])
Expand Down

0 comments on commit 448d070

Please sign in to comment.