from rest_framework import permissions from rest_framework.request import Request from apps.groups.models import GroupMembership class IsGroupMember(permissions.BasePermission): """Allow access only to members of the group.""" def has_permission(self, request: Request, view: object) -> bool: group_id = view.kwargs.get("group_pk") or view.kwargs.get("pk") if not group_id: return False return GroupMembership.objects.filter( group_id=group_id, user=request.user ).exists() class IsGroupAdmin(permissions.BasePermission): """Allow access only to group admins.""" def has_permission(self, request: Request, view: object) -> bool: group_id = view.kwargs.get("group_pk") or view.kwargs.get("pk") if not group_id: return False return GroupMembership.objects.filter( group_id=group_id, user=request.user, role=GroupMembership.Role.ADMIN ).exists()