def post(self, request, pk, user_id): community = get_object_or_404(Community, pk=pk, valid=True) self.check_object_permissions(request, community) with transaction.atomic(): user_list = get_community_non_members_list(community).values_list( 'id', flat=True) if user_id in user_list: user = User.objects.get(id=user_id) Invitation.objects.create(user=user, community=community) NoticeManager.create_notice_PC(related_user=user, related_community=community, subtype=0) return Response(status=status.HTTP_200_OK) else: raise NotAcceptable('此用户不在可邀请列表中。')
def delete(self, request, pk, user_id): community = get_object_or_404(Community, pk=pk, valid=True) self.check_object_permissions(request, community) with transaction.atomic(): if community.members.filter(id=user_id): user = User.objects.get(id=user_id) if community.owner != user and community.is_admin( user) is False: community.members.remove(user) NoticeManager.create_notice_PC(related_user=user, related_community=community, subtype=2) return Response(status=status.HTTP_204_NO_CONTENT) else: raise NotAcceptable('无法踢出所有者和管理员。') else: raise NotAcceptable('此用户不在此社团中。')
def post(self, request, pk, user_id, action): community = get_object_or_404(Community, pk=pk, valid=True) self.check_object_permissions(request, community) with transaction.atomic(): if community.members.filter(id=user_id): user = User.objects.get(id=user_id) admin_status = community.is_admin(user) if action == 'set' and admin_status is False: community.admins.add(user) elif action == 'unset' and admin_status is True: community.admins.remove(user) NoticeManager.create_notice_PC(related_user=user, related_community=community, subtype=1) else: raise NotAcceptable('错误的操作。') else: raise NotAcceptable('此用户不在此社团中。') return Response(status=status.HTTP_200_OK)