def post(self, request, pk, user_id, action):
        community = get_object_or_404(Community, pk=pk, valid=True)
        self.check_object_permissions(request, community)

        if community.members.filter(id=user_id, membership__valid=True):
            raise NotAcceptable('此成员已经通过审核。')
        elif not community.members.filter(id=user_id):
            raise NotAcceptable('此成员不在审核列表上。')

        member = community.membership_set.get(user_id=user_id)
        related_user = community.members.get(id=user_id)
        subtype_ca = 1
        subtype_c_ap = 2
        with transaction.atomic():
            if action == 'allow':
                description = '加入社团请求被通过。'
                NoticeManager.create_notice_CA(related_user, community,
                                               subtype_ca, description)
                NoticeManager.create_notice_C_AP(related_user, community,
                                                 subtype_c_ap)

                member.valid = True
                member.save()
            elif action == 'deny':
                description = '加入社团请求被拒绝。'
                NoticeManager.create_notice_CA(related_user, community,
                                               subtype_ca, description)

                member.delete()
            else:
                raise NotAcceptable('错误的操作。')

        return Response(status=status.HTTP_200_OK)
 def perform_update(self, serializer):
     with transaction.atomic():
         status = serializer.validated_data['valid']
         community = self.get_object()
         owner = community.owner
         name = community.name
         serializer.save()
         NoticeManager.create_notice_CA(
             related_user=owner,
             related_community=community,
             subtype=0,
             description=f'你的社团 {name} {"目前已经审核通过" if status else "未通过审核。"}'
         )