コード例 #1
0
 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('此用户不在可邀请列表中。')
コード例 #2
0
 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('此用户不在此社团中。')
コード例 #3
0
 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)