예제 #1
0
파일: views.py 프로젝트: kathar0s/wedding
def chat_bot(request):

    # POST이고 Ajax인 경우에만 처리
    if request.method == "POST" and request.is_ajax():
        data = {"error": True, "code": 500, "message": u"잘못된 접근입니다"}

        post = request.POST.copy()

        # 초기 요청인 경우에는 기본 메세지를 보낸다.
        if post["rcode"] == "greeting":
            # 해당 유저에게 특화된 메세지가 있는지 확인하고 없으면 기본 메세지를 보여준다.
            user, created = get_user(request)

            # 해당 유저 채팅방에 메세지가 하나도 없는지 확인한다.
            chatroom = ChatRooms.objects.get(owner=user)

            chatlogs = chatroom.chatlogs_set.count()

            default_messages = DefaultMessages.objects.filter(target=user.name + user.last_number).order_by(
                "created_at"
            )

            # 해당 유저에게 특화된 메세지가 없는 경우 Default 값을 불러온다.
            if len(default_messages) == 0:
                default_messages = DefaultMessages.objects.filter(target="").order_by("created_at")

            if chatlogs == 0:
                # 초기 초대 참여 공지 추가 (초기 메세지이므로 처음에 삽입한다.)
                chatlog = ChatLogs(user=user, message="")
                chatlog.chatroom_id = post["chatroom"]
                chatlog.type = "notice"
                chatlog.save()

                chatlog.message = u"<strong>%s</strong>님이 <strong>%s</strong>을 초대했습니다." % (
                    default_messages[0].user.name,
                    user.name,
                )
                chatlog.save()

            messages = []
            for default_message in default_messages:
                messages.append(
                    {
                        "message": default_message.message,
                        "name": default_message.user.name,
                        "profile": default_message.user.profile,
                    }
                )

                if chatlogs == 0:
                    chatlog = ChatLogs(user=default_message.user, message=default_message.message)
                    chatlog.chatroom_id = post["chatroom"]
                    chatlog.type = "other"
                    chatlog.save()

            data["error"] = False
            data["code"] = 200
            data["message"] = u"초기 인사말 불러오기 완료"
            data["response"] = {"messages": messages}
        else:
            default_messages = DefaultMessages.objects.filter(target=post["rcode"]).order_by("created_at")

            if len(default_messages) > 0:
                messages = []
                for default_message in default_messages:
                    messages.append(
                        {
                            "message": default_message.message,
                            "name": default_message.user.name,
                            "profile": default_message.user.profile,
                        }
                    )

                    chatlog = ChatLogs(user=default_message.user, message=default_message.message)
                    chatlog.chatroom_id = post["chatroom"]
                    chatlog.type = "other"
                    chatlog.save()

                data["error"] = False
                data["code"] = 200
                data["message"] = u"자동 메세지 전송 완료"
                data["response"] = {"messages": messages}
            else:
                data["response"] = {"message": u"잘못된 코드를 입력하셨습니다.", "name": u"형정석", "profile": u"hjs.png"}

        return JsonResponse(data)
예제 #2
0
파일: views.py 프로젝트: kathar0s/wedding
def chat_send(request):

    # POST이고 Ajax인 경우에만 처리
    if request.method == "POST" and request.is_ajax():
        data = {"error": True, "code": 500, "message": u"잘못된 접근입니다"}

        post = request.POST.copy()

        # 메세지를 저장한다.

        user, created = get_user(request)

        # 메세지 양쪽 공백 제거한 후 길이가 0인 경우에는 저장하지 않는다.
        message = post["message"]

        try:
            chatroom = ChatRooms.objects.get(id=post["chatroom"])

            # 요청한 채팅방 주인인지 확인
            # 메세지 길이가 공백제거한 후 1글자라도 있어야 된다.
            if len(message.strip()) != 0:

                if user.id == chatroom.owner.id:
                    chatlog = ChatLogs(user=user, message=message)
                    chatlog.chatroom_id = post["chatroom"]
                    chatlog.type = "me"
                    chatlog.unread_count = 1
                    chatlog.save()

                    data["error"] = False
                    data["code"] = 200
                    data["message"] = u"메세지 저장 완료"
                else:
                    chatlog = ChatLogs(user=user, message=message)
                    chatlog.chatroom_id = post["chatroom"]
                    chatlog.type = "other"
                    chatlog.unread_count = 1
                    chatlog.save()

                    data["error"] = False
                    data["code"] = 200
                    data["message"] = u"메세지 저장 완료"
            else:
                data["message"] = u"메세지 저장 실패"

        except ChatRooms.DoesNotExist:
            data["message"] = u"존재하지 않는 채팅방입니다."

        return JsonResponse(data)