Пример #1
0
def get_dialog_or_create_new(same_sender_id, same_recipient_id):
    #Get sender and recipient
    sender = Mother.objects.get(id=same_sender_id)
    recipient = Mother.objects.get(id=same_recipient_id)
    #Try to get dialog via owner is sender, and interlocutor is recipient
    if Dialog.objects.filter(owner=sender).filter(interlocutor=recipient):
        print "dialog found in 1st step"
        return Dialog.objects.filter(owner=sender).filter(interlocutor=recipient).get()
    #Try to get dialog via owner is recipient, and interlocutor is sender
    if Dialog.objects.filter(owner=recipient).filter(interlocutor=sender):
        print "dialog found in 2th step"
        return Dialog.objects.filter(owner=recipient).filter(interlocutor=sender).get()
    #If dialog doesn`t create - return Dialog instance!
    print "dialog not found, create new"
    current_dialod = Dialog()
    current_dialod.owner = sender
    current_dialod.interlocutor = recipient
    current_dialod.save()
    return current_dialod
Пример #2
0
def send_message(request):
    did = int(request.POST.get('dialog_id'))
    username = request.POST.get('username')
    msg = request.POST.get('msg')

    if not request.user.is_authenticated() or not msg:
        return HttpResponse(json.dumps({"status": "failed"}), content_type="application/json")

    if not did:
        d = Dialog(first_user=request.user, second_user=get_user_model().objects.get(username=username))
        d.save()
    else:
        d = Dialog.objects.get(id=did)

    newmsg = Message(dialog=d, sender=request.user, is_read=False, send_date=timezone.now(), text=msg)
    newmsg.save()

    return HttpResponse(json.dumps({"status": "ok", "date": "Just now" }),
                        content_type="application/json")
Пример #3
0
def dialog(request, username):
    if not get_user_model().objects.get(username=username):
        return render(request, "main/no_user.html", {"username": username})

    dialogs = Dialog.get_dialog_of(request.user.username, username)
    if not dialogs:
        messages = []
        dialog_id = 0
    else:
        messages = dialogs[0].get_messages()
        dialog_id = dialogs[0].id

    return render(request, "messages/dialog.html", {"username": username, "dialog_id": dialog_id, "messages": messages})
Пример #4
0
def send_message_2(request, recipient):
    #Подготавливаем нужные нам данные
    current_user = get_current_user(request=request)
    recipient = Mother.objects.get(id=recipient)
    #Подготовка данных завершена
    #0 - Создаем сообщение
    if request.method == "POST":
        now = datetime.now()
        new_message = Messages()
        new_message.sender = get_current_user(request=request)
        new_message.recipient = recipient
        new_message.message_text = request.POST["message_text"]
        new_message.send_time = "%s/%s/%s %s:%s"%(now.day, now.month, now.year, now.minute, now.hour)
        new_message.save()
        #1 - Получаем диалог пользователя c выбранным собеседником
        try:
            #2 - Если такой диалог создан - добавляем сообщение в список сообщений диалога
            print "dialog "
            print "AAA"
            print current_user.email
            print recipient.email
            current_dialod = Dialog.objects.get(Q(owner=current_user), Q(interlocutor=recipient) | Q(owner=recipient), Q(interlocutor=current_user))




            print current_dialod.id

            current_dialod.messages_box.add(new_message)
            current_dialod.save()
        except ObjectDoesNotExist:
            #3 - Если такой диалог НЕ создан - создаем и добавляем сообщение в список сообщений диалога
            print "dialog not found"
            current_dialod = Dialog()
            current_dialod.owner = current_user
            current_dialod.interlocutor = recipient
            current_dialod.save()
            current_dialod.messages_box.add(new_message)
            current_dialod.save()

    return render(request, "create_message.html", {"recipient": recipient.id})
Пример #5
0
def msglist(request):
    dialog_list = map(lambda x: (x, x.get_last_message(), x.get_collocutor(request.user.username)),
                      Dialog.get_dialogs_with(request.user.username))
    dialog_user_list = map(lambda x: x[2], dialog_list)
    return render(request, "messages/list.html", {'dialog_list': dialog_list, 'dialog_user_list': dialog_user_list})