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)
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)