1616from kitsune .upload .tasks import create_image_thumbnail
1717
1818
19- def _remove_group_member (profile , user , request ):
19+ def _remove_group_member (profile , user , request , remove_from_group = True ):
2020 """
2121 Remove a member/leader from a group with validation.
2222
2323 Handles both regular members and leaders, with appropriate validation
2424 and error messages for the last leader scenario.
2525
26+ Args:
27+ profile: The GroupProfile to remove the user from
28+ user: The user to remove
29+ request: The HTTP request object
30+ remove_from_group: If True, removes user from group entirely.
31+ If False, only removes from leaders (demotes to regular member).
32+
2633 Returns True if removed successfully, False if validation failed.
2734 """
2835 is_leader = profile .leaders .filter (pk = user .pk ).exists ()
@@ -38,7 +45,10 @@ def _remove_group_member(profile, user, request):
3845
3946 if is_leader :
4047 profile .leaders .remove (user )
41- user .groups .remove (profile .group )
48+
49+ if remove_from_group :
50+ user .groups .remove (profile .group )
51+
4252 return True
4353
4454
@@ -235,7 +245,7 @@ def remove_leader(request, group_slug, user_id):
235245 raise PermissionDenied
236246
237247 if request .method == "POST" :
238- if _remove_group_member (prof , user , request ):
248+ if _remove_group_member (prof , user , request , remove_from_group = False ):
239249 msg = _ ("{user} removed from the group leaders successfully!" ).format (
240250 user = user .username
241251 )
0 commit comments