def has_permission(self, request, view): try: if request.method == "GET": return True isCheck = False user = request_get_user(request) if user: isCheck = True subject_pk = view.kwargs["subject_pk"] subject = get_object_or_404(Subject, pk=subject_pk) # 해당 유저가 속한 그룹의 Subject가 아닌경우 if subject.group_id not in user.attendGroups.all(): self.message = "자신이 속한 그룹에서만 작성 가능합니다." isCheck = False else: isCheck = False except User.DoesNotExist: self.message = "존재하지 않는 유저입니다." isCheck = False except Subject.DoesNotExist: self.message = "존재하지 않는 목표입니다." isCheck = False return isCheck
def has_permission(self, request, view): try: isCheck = False user = request_get_user(request) if user: isCheck = True subject_pk = view.kwargs["subject_pk"] todo_pk = view.kwargs["todo_pk"] subject = get_object_or_404(Subject, pk=subject_pk) todo = get_object_or_404(Todo, pk=todo_pk) # 해당 유저가 속한 그룹의 Subject가 아닌경우 if subject.group_id not in user.attendGroups.all(): self.message = "다른사람이 작성한 게시물은 수정할 수 었습니다." isCheck = False # 내가 작성한 글이 아닌 경우 if todo.writer != user: self.message = "다른사람이 작성한 게시물은 수정할 수 었습니다." isCheck = False else: isCheck = False except User.DoesNotExist: self.message = "존재하지 않는 유저입니다." isCheck = False except Subject.DoesNotExist: self.message = "존재하지 않는 목표입니다." isCheck = False return isCheck
def put(self, request): user = request_get_user(request) serializer = UserUpdateSerializer(data=request.data) if serializer.is_valid(): serializer.update(instance=user, validated_data=request.data) return Response(serializer.data, status=200) return Response(serializer.errors, status=400)
def delete(self, request): try: user = request_get_user(request) user.is_active = False user.save() return Response("회원탈퇴에 성공", status=200) except User.DoesNotExist: message = "존재하지 않는 유저입니다." return Response(message, status=200)
def post(self, request, group_pk): serializer = SubjectBaseSerializer( group=get_object_or_404(Group, pk=group_pk), leader=request_get_user(request), data=request.data, ) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=201)
def post(self, request, subject_pk): serializer = todoGroupSimpleSerializer( subject=get_object_or_404(Subject, pk=subject_pk), writer=request_get_user(request), data=request.data, ) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=201)
def put(self, request, group_pk, subject_pk): user = request_get_user(request) group = (get_object_or_404(Group, pk=group_pk),) serializer = SubjectDetailSerializer(data=request.data) if serializer.is_valid(): serializer.update( get_object_or_404(Subject, pk=subject_pk), serializer.data ) return Response(serializer.data, status=200) return Response(serializer.errors, status=400)
def put(self, request, pk): group = self.get_object(pk) user = request_get_user(request) # 참가신청목록과, 그룹멤버에 포함되지 않아야 신청가능하다. if user in group.attends.all(): return Response("이미 참가신청을 하였습니다.", status=405) elif user in group.members.all(): return Response("이미 그룹에 참여중입니다.", status=405) group.attends.add(user) group.save() return Response("참가신청 되었습니다.", status=200)
def get(self, request): # 유저를 받아온다 hoon user = request_get_user(request) # hoon이 속한 그룹을 가져온다 groups = user.attendGroups.all() devices = [] for group in groups: subjects = Subject.objects.filter(group_id=group) todoGroups = TodoGroup.objects.filter(subject_id__in=subjects) todos = Todo.objects.filter(todoGroup_id__in=todoGroups, writer=user) devices.append(groupAndTodoDevice(group, todos)) serializer = DeviceSerializer(devices, many=True) return Response(serializer.data)
def delete(self, request, pk): group = self.get_object(pk) user = request_get_user(request) # 참가신청목록과, 그룹멤버에 포함되지 않아야 신청가능하다. if user in group.attends.all(): group.attends.remove(user) group.save() return Response("참가신청이 취소 되었습니다.", status=200) elif user in group.members.all(): group.members.remove(user) user.attendGroups.remove(group) user.save() group.save() return Response("그룹에서 탈퇴하였습니다.", status=200) else: return Response("해당 그룹에 속한 정보가 없습니다.", status=405)
def has_permission(self, request, view): try: if request.method == "GET": return True isCheck = False user = request_get_user(request) if user: isCheck = True pk = view.kwargs["group_pk"] group = get_object_or_404(Group, pk=pk) if group.leader != user: self.message = "그룹장만 승인이 가능합니다." isCheck = False else: isCheck = False except User.DoesNotExist: self.message = "존재하지 않는 유저입니다." isCheck = False except Group.DoesNotExist: self.message = "존재하지 않는 그룹입니다." isCheck = False return isCheck
def get(self, request): user = request_get_user(request) serializer = UserBaseSerializer(user) return Response(serializer.data)
def put(self, request): user = request_get_user(request) user.set_password(request.data["password"]) user.save() return Response("비밀번호가 변경되었습니다.", status=200)
def post(self, request): serializer = GroupBaseSerializer(leader=request_get_user(request), data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=201)
def get(self, request): user = request_get_user(request) group = user.attendGroups.all() serializer = myGroupInfoSerializer(group, many=True) return Response(serializer.data)