Skip to content

Commit

Permalink
Refactor set_admin_role to be more complete
Browse files Browse the repository at this point in the history
The helper was only setting attribute, relying on the shared view to
perform the heavy lifting.
  • Loading branch information
francoisfreitag committed Feb 3, 2025
1 parent c01da80 commit d0f5648
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 12 deletions.
5 changes: 5 additions & 0 deletions itou/common_apps/organizations/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,11 @@ def set_admin_role(self, membership, admin, *, updated_by):
)
membership.is_admin = admin
membership.updated_by = updated_by
membership.save(update_fields=["is_admin", "updated_by"])
if admin:
self.add_admin_email(membership.user).send()
else:
self.remove_admin_email(membership.user).send()

@property
def active_members(self):
Expand Down
24 changes: 12 additions & 12 deletions itou/common_apps/organizations/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,27 +31,27 @@ def update_org_admin_role(request, target_member, action):
raise PermissionDenied

try:
membership = request.current_organization.memberships.get(user=target_member, is_active=True)
membership = request.current_organization.memberships.select_related("user").get(
user=target_member,
is_active=True,
)
except ObjectDoesNotExist:
raise PermissionDenied

if request.method == "POST":
match action:
case "add":
request.current_organization.set_admin_role(membership, admin=True, updated_by=request.user)
messages.success(
request, f"{target_member.get_full_name()} a été ajouté(e) aux administrateurs de cette structure."
)
request.current_organization.add_admin_email(target_member).send()
admin = True
action_label = "ajouté(e) aux"
case "remove":
request.current_organization.set_admin_role(membership, admin=False, updated_by=request.user)
messages.success(
request, f"{target_member.get_full_name()} a été retiré(e) des administrateurs de cette structure."
)
request.current_organization.remove_admin_email(target_member).send()
admin = False
action_label = "retiré(e) des"
case _:
raise ValueError(f"Unknown {action=}")
membership.save()
request.current_organization.set_admin_role(membership, admin, updated_by=request.user)
messages.success(
request, f"{target_member.get_full_name()} a été {action_label} administrateurs de cette structure."
)
return True

return False

0 comments on commit d0f5648

Please sign in to comment.