コード例 #1
0
def member_invite_send(request, teamName):

    team = get_object_or_404_custom(Team, name=teamName)
    memberNickname = get_value_or_error(request.data, "memberNickname")
    invitingMessage = get_object_or_None(request.data, "invitingMessage")
    member = get_object_or_404_custom(CustomProfile,
                                      nickname=memberNickname).user

    if not (team.representative == request.user or request.user.is_staff):
        return Response(f"당신은 팀 {teamName}'의 대표가 아닙니다. 초대 요청을 보낼 수 없습니다.",
                        status=status.HTTP_401_UNAUTHORIZED)

    if memberNickname == request.user.customProfile.nickname:
        return Response("스스로를 초대할 수 없습니다.", status=status.HTTP_403_FORBIDDEN)
    elif member in team.members.all():
        return Response(
            f"멤버 {memberNickname}는 이미 팀 {teamName}의 멤버입니다. 초대할 수 없습니다.",
            status=status.HTTP_403_FORBIDDEN)
    elif get_object_or_None(TeamInvite, team=team, invitee=member):
        return Response(
            f"당신은 {memberNickname}을 to team {teamName}에 이미 초대했습니다. ",
            status=status.HTTP_403_FORBIDDEN)
    if team.members.all().count() + TeamInvite.objects.filter(
            team=team).count() > 10:
        return Response("팀원은 최대 10명입니다.", status=status.HTTP_400_BAD_REQUEST)

    TeamInvite.objects.create(
        team=team,
        invitee=member,
    )
    return Response(status=status.HTTP_200_OK)
コード例 #2
0
def change_representative(request, teamName):
    team = get_object_or_404_custom(Team, name=teamName)
    memberNickname = get_value_or_error(request.data, "memberNickname")
    if team.representative == request.user or request.user.is_staff:
        member = get_object_or_404_custom(CustomProfile,
                                          nickname=memberNickname).user
        team.representative = member
        team.save()
        return Response(status=status.HTTP_200_OK)
    else:
        return Response(status=status.HTTP_401_UNAUTHORIZED)
コード例 #3
0
def member_invite_cancel(request, teamName):
    team = get_object_or_404_custom(Team, name=teamName)
    memberNickname = get_value_or_error(request.data, "memberNickname")
    member = get_object_or_404_custom(CustomProfile,
                                      nickname=memberNickname).user
    teamInvite = get_object_or_404_custom(TeamInvite,
                                          team=team,
                                          invitee=member)
    if team.representative == request.user or request.user.is_staff:
        teamInvite.delete()
        return Response(status=status.HTTP_200_OK)
    else:
        return Response(
            f"당신은 팀 {teamName}'의 대표도 관리자도 아닙니다. 멤버 초대 요청을 취소할 수 없습니다.",
            status=status.HTTP_401_UNAUTHORIZED)
コード例 #4
0
def member_invite_accept(request, teamName):
    team = get_object_or_404_custom(Team, name=teamName)
    teamInvite = get_object_or_404_custom(TeamInvite,
                                          team=team,
                                          invitee=request.user)

    if not (teamInvite.invitee == request.user or request.user.is_staff):
        return Response(f"당신은 팀 {teamName}'의 초대를 받지 않았습니다.",
                        status=status.HTTP_401_UNAUTHORIZED)

    isAccepted = get_object_or_404_custom(request.data, "isAccepted")
    if isAccepted:
        team.members.add(teamInvite.invitee)
    teamInvite.delete()
    return Response(status=status.HTTP_200_OK)
コード例 #5
0
 def get(self, request, pk):
     lecturePackage = get_object_or_404_custom(LecturePackage, pk=pk)
     lecturePackageComments = LecturePackageComment.objects.filter(
         lecturePackage=lecturePackage)
     serializer = LecturePackageCommentSerializer(
         lecturePackageComments, many=True, context={'user': request.user})
     return Response(serializer.data)
コード例 #6
0
    def delete(self, request, teamName):
        team = get_object_or_404_custom(Team, name=teamName)

        if team.representative == request.user or request.user.is_staff:
            team.delete()
            return Response(status=status.HTTP_200_OK)
        return Response(status=status.HTTP_401_UNAUTHORIZED)
コード例 #7
0
def DeleteContestFileWithPK(request, pk):
    if not request.user.is_staff:
        Response(status=status.HTTP_403_FORBIDDEN)

    contestFile = get_object_or_404_custom(ContestFile, pk=pk)
    contestFile.delete()
    return Response(status=status.HTTP_200_OK)
コード例 #8
0
 def post(self, request, pk):
     lecturePackage = get_object_or_404_custom(LecturePackage, pk=pk)
     serializer = EduVideoLectureSerializer(data=request.data,
                                            context={"user": request.user})
     if serializer.is_valid():
         serializer.save(writer=request.user, lecturePackage_id=pk)
     return Response(data=serializer.data, status=status.HTTP_200_OK)
コード例 #9
0
 def get(self, request, pk):
     eduVideoLecture = get_object_or_404_custom(EduVideoLecture, pk=pk)
     eduVideoLectureComments = EduVideoLectureComment.objects.filter(
         eduVideoLecture=eduVideoLecture)
     serializer = EduVideoLectureCommentSerializer(
         eduVideoLectureComments, many=True, context={'user': request.user})
     return Response(serializer.data)
コード例 #10
0
def ContestCodeNoteLike(request, pk):
    contestCodenote = get_object_or_404_custom(ContestCodeNote, pk=pk)
    if contestCodenote.likes.filter(id=request.user.id).exists():
        contestCodenote.likes.remove(request.user)
        return Response(status=status.HTTP_200_OK)
    else:
        contestCodenote.likes.add(request.user)
        return Response(status=status.HTTP_202_ACCEPTED)
コード例 #11
0
def VelogCommentLike(request, pk):
    velogComment = get_object_or_404_custom(VelogComment, pk=pk)
    if velogComment.likes.filter(id=request.user.id).exists():
        velogComment.likes.remove(request.user)
        return Response(status=status.HTTP_200_OK)
    else:
        velogComment.likes.add(request.user)
        return Response(status=status.HTTP_202_ACCEPTED)
コード例 #12
0
 def get_commentToQuestion(self, request, pk):
     commentToQuestion = get_object_or_404_custom(CommentToQuestion, pk=pk)
     if (not commentToQuestion.questionToManager.isPrivate) or \
             commentToQuestion.isPrivileged(request):
         return commentToQuestion
     else:
         raise DDCustomException('당신은 이 commentToQuestion에 접근할 권한이 없습니다.',
                                 status_code=status.HTTP_401_UNAUTHORIZED)
コード例 #13
0
def ContestScrap(request, pk):
    contest = get_object_or_404_custom(Contest, pk=pk)
    if contest not in request.user.customProfile.contestScraps.all():
        request.user.customProfile.contestScraps.add(contest)
        return Response(status=status.HTTP_202_ACCEPTED)
    else:
        request.user.customProfile.contestScraps.remove(contest)
        return Response(status=status.HTTP_200_OK)
コード例 #14
0
def team_invite_from_team(request, teamName):
    team = get_object_or_404_custom(Team, name=teamName)
    if not request.user in team.members.all():
        return Response(data="팀 멤버만 볼 수 있습니다.",
                        status=status.HTTP_401_UNAUTHORIZED)
    teamInvites = TeamInvite.objects.filter(team=team)
    serializer = TeamInviteSerializer(teamInvites, many=True)
    return Response(data=serializer.data, status=status.HTTP_200_OK)
コード例 #15
0
 def get(self, request, pk):
     lecturePackage = get_object_or_404_custom(LecturePackage, pk=pk)
     videoLectures = EduVideoLecture.objects.filter(
         lecturePackage=lecturePackage)
     serializer = EduVideoLecturesSerializer(videoLectures,
                                             many=True,
                                             context={"user": request.user})
     return Response(serializer.data)
コード例 #16
0
def VelogScrap(request, pk):
    velog = get_object_or_404_custom(Velog, pk=pk)
    if velog.scrapProfiles.filter(id=request.user.customProfile.id).exists():
        request.user.customProfile.velogScraps.remove(velog)
        return Response(status=status.HTTP_200_OK)
    else:
        request.user.customProfile.velogScraps.add(velog)
        return Response(status=status.HTTP_202_ACCEPTED)
コード例 #17
0
    def get(self, request, pk):
        contest = get_object_or_404_custom(Contest, pk=pk)
        contestFiles = ContestFile.objects.filter(contest=contest)

        serializer = ContestFileSerializer(contestFiles,
                                           context={'user': request.user},
                                           many=True)
        return Response(serializer.data)
コード例 #18
0
def ContestCodenoteScrap(request, pk):
    contestCodenote = get_object_or_404_custom(ContestCodeNote, pk=pk)
    if contestCodenote.scrapProfiles.filter(
            id=request.user.customProfile.id).exists():
        request.user.customProfile.codeNoteScraps.remove(contestCodenote)
        return Response(status=status.HTTP_200_OK)
    else:
        request.user.customProfile.codeNoteScraps.add(contestCodenote)
        return Response(status=status.HTTP_202_ACCEPTED)
コード例 #19
0
 def get_questionToManager(self, request, pk):
     questionToManager = get_object_or_404_custom(QuestionToManager, pk=pk)
     if (not questionToManager.isPrivate) \
             or (request.user == questionToManager.writer) \
             or request.user.is_staff:
         return questionToManager
     else:
         raise DDCustomException('당신은 이 questionToManager에 접근할 권한이 없습니다.',
                                 status_code=status.HTTP_401_UNAUTHORIZED)
コード例 #20
0
    def put(self, request, pk):
        notice = get_object_or_404_custom(Notice, pk=pk)

        serializer = NoticeSerializer(notice, data=request.data, partial=True, context={"user": request.user})
        if serializer.is_valid():  # validate 로직 추가
            serializer.save()
            return Response(serializer.data)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
コード例 #21
0
def ContestParticipantAnswerLike(request, pk):
    contestParticipantAnswer = get_object_or_404_custom(
        ContestParticipantAnswer, pk=pk)
    if contestParticipantAnswer not in request.user.contestAnswerLikes.all():
        request.user.contestAnswerLikes.add(contestParticipantAnswer)
        return Response(status=status.HTTP_200_OK)
    else:
        request.user.contestAnswerLikes.remove(contestParticipantAnswer)
        return Response(status=status.HTTP_200_OK)
コード例 #22
0
    def post(self, request, pk):
        questionToManager = get_object_or_404_custom(QuestionToManager, pk=pk)
        if questionToManager.writer != request.user and \
                not request.user.is_staff:
            return Response(status=status.HTTP_401_UNAUTHORIZED)

        commentToQuestion_id = request.data.get('commentToQuestion_id')
        if commentToQuestion_id:
            parent_commentToQuestion = get_object_or_404_custom(CommentToQuestion, pk=commentToQuestion_id)
        else:
            parent_commentToQuestion = None
        serializer = CommentToQuestionSerializerForPost(data=request.data)
        if serializer.is_valid():
            commentToQuestion = serializer.save(writer=request.user, questionToManager=questionToManager,
                                                commentToQuestion=parent_commentToQuestion)
            returnSerializer = CommentToQuestionSerializer(commentToQuestion, context={"user": request.user})
            return Response(returnSerializer.data)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
コード例 #23
0
 def post(self, request, pk):
     # 프론트엔드에서 안 담아주면 none 으로 처리됨.
     parent_velogComment_id = request.data.get('velogComment_id')
     parent_velogComment = None
     if parent_velogComment_id:
         parent_velogComment = get_object_or_404_custom(
             VelogComment, pk=parent_velogComment_id)
     velog = get_object_or_404_custom(Velog, pk=pk)
     serializer = VelogCommentSerializerForPost(data=request.data)
     if serializer.is_valid():
         velogComment = serializer.save(writer=request.user,
                                        velog=velog,
                                        velogComment=parent_velogComment)
         returnSerializer = VelogCommentSerializer(
             velogComment, context={"user": request.user})
         return Response(returnSerializer.data)
     else:
         return Response(serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
コード例 #24
0
def ContestCodeNoteCreateWithContestPk(request, pk):
    contest = get_object_or_404_custom(Contest, pk=pk)
    serializer = ContestCodeNoteSerializer(data=request.data)
    if serializer.is_valid():
        contestCodeNote = serializer.save(writer=request.user, contest=contest)
        returnSerializer = ContestCodeNoteSerializer(
            contestCodeNote, context={'user': request.user})
        return Response(returnSerializer.data)
    else:
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
コード例 #25
0
def delete_user_pk(request, pk):
    user = get_object_or_404_custom(User, pk=pk)
    teams = Team.objects.filter(representative=user)
    for team in teams:
        if team.members.exclude(id=user.id):
            team.representative = team.members.exclude(id=request.user.id)[0]
            team.save()
        else:
            team.delete()
    user.delete()
    Response(status=status.HTTP_200_OK)
コード例 #26
0
 def put(self, request, pk):
     videoLecture = get_object_or_404_custom(EduVideoLecture, pk=pk)
     serializer = EduVideoLectureSerializer(videoLecture,
                                            data=request.data,
                                            partial=True)
     if serializer.is_valid():  # validate 로직 추가
         videoLecture = serializer.save()
         return Response(EduVideoLectureSerializer(videoLecture).data)
     else:
         return Response(serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
コード例 #27
0
 def post(self, request, pk):
     lecturePackage = get_object_or_404_custom(LecturePackage, pk=pk)
     serializer = LecturePackageCommentSerializerForPostPUT(
         data=request.data, context={'user': request.user})
     if serializer.is_valid():
         comment = serializer.save(writer=request.user,
                                   lecturePackage=lecturePackage)
         return Response(LecturePackageCommentSerializer(comment).data)
     else:
         return Response(serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
コード例 #28
0
    def get(self, request, pk):
        questionToManager = get_object_or_404_custom(QuestionToManager, pk=pk)
        commentToQuestion = CommentToQuestion.objects.filter(questionToManager=questionToManager)

        if (not questionToManager.isPrivate) or \
                request.user == questionToManager.writer or \
                request.user.is_staff:
            serializer = CommentsToQuestionSerializer(commentToQuestion, many=True, context={"user": request.user})
            return Response(serializer.data)
        else:
            return Response(status=status.HTTP_401_UNAUTHORIZED)
コード例 #29
0
    def put(self, request, teamName):
        team = get_object_or_404_custom(Team, name=teamName)
        if request.user != team.representative:
            return Response(status=status.HTTP_401_UNAUTHORIZED)

        defaultImage = get_object_or_404_custom(request.data, "defaultImage")

        if defaultImage:
            team.smallImage = "user_1/profile"
            team.image = "user_1/profile"
            team.save()
            return Response(status=status.HTTP_200_OK)

        image = get_object_or_None(request.data, "image")
        if image:
            team.smallImage = image
            team.image = image
            team.save()
            return Response(status=status.HTTP_200_OK)
        return Response(status=status.HTTP_400_BAD_REQUEST)
コード例 #30
0
def member_delete(request, teamName):
    team = get_object_or_404_custom(Team, name=teamName)
    memberNickname = get_value_or_error(request.data, "memberNickname")
    member = get_object_or_404_custom(CustomProfile,
                                      nickname=memberNickname).user
    # 1. 관리자 2. 팀의 대표가 멥버를 강퇴 3. 팀 멤버가 자진 탈퇴
    if request.user.is_staff or team.representative == request.user or member == request.user:
        if member == team.representative:
            if team.members.exclude(id=request.user.id):
                team.representative = list(
                    team.members.exclude(id=request.user.id))[0]
                team.save()
                team.members.remove(member)
            else:
                team.delete()
        else:
            team.members.remove(member)

        return Response(status=status.HTTP_200_OK)
    else:
        return Response(status=status.HTTP_401_UNAUTHORIZED)