Exemple #1
0
def start_new_conversation_from_profile(request, recipent_pk):
    recipent = get_user_model().objects.get(pk=recipent_pk)

    if request.method == 'POST':
        form = forms.StartNewConversationFromProfile(request.POST)

        if form.is_valid():
            new_conversation = Conversation(
                subject=form.cleaned_data['subject'],
                initiator=request.user,
                recipent=recipent)
            new_conversation.save()

            first_message = Message(coversation=new_conversation,
                                    sender=request.user,
                                    receiver=recipent,
                                    content=form.cleaned_data['message'])
            first_message.save()

            return redirect('conversations:conversation_panel',
                            conversation_pk=new_conversation.pk)

        else:
            # TODO add error page
            print('error creating conversation - need to have page here')

    elif request.method == 'GET':
        form = forms.StartNewConversationFromProfile()
        return render(request,
                      'conversations/start_new_conversation.html',
                      context={
                          'recipent': recipent,
                          'form': form
                      })
Exemple #2
0
def conversation_view(request, conversation_pk):
    conversation = Conversation.objects.get(pk=conversation_pk)

    if request.method == 'POST':
        user = request.user
        addressee = conversation.recipent if conversation.initiator == user else conversation.initiator
        form = forms.ReplyToConversation(request.POST)

        if form.is_valid():
            reply = Message(conversation=conversation,
                            sender=user,
                            receiver=addressee,
                            content=form.cleaned_data['message'])

            reply.save()
            return redirect('conversations:conversation_page',
                            conversation_pk=conversation_pk)

        else:
            # TODO add error page
            print('error replying - need to have page here')

    elif request.method == 'GET':
        form = forms.ReplyToConversation()
        messages = Message.objects.filter(conversation=conversation)
        return render(request,
                      'conversations/conversation_page.html',
                      context={
                          'conversation': conversation,
                          'messages': messages,
                          'form': form
                      })
Exemple #3
0
 def test_that_messages_can_be_read(self):
     """Tests that messages can be read
     """
     message = Message(**self.msg_stub)
     message.save()
     self.assertIsNotNone(message.id)
     message = Message.objects.latest('sent_at')
     self.assertEqual(message.subject, self.msg_stub['subject'])
Exemple #4
0
def conversation_msgs(conversation, user, admin_user):
    message = Message(user_id=user.id,
                      conversation_id=conversation.id,
                      message="First message")
    conversation.save(message=message)
    message = Message(user_id=admin_user.id,
                      conversation_id=conversation.id,
                      message="Second message")
    conversation.save(message=message)
    return conversation
def test_last_message(conversation_msgs, user):
    conversation = conversation_msgs
    assert conversation.last_message.message == "Second message"

    message = Message(user_id=user.id, message="Third message")
    conversation.save(message=message)
    assert conversation.last_message.message != "Second message"
Exemple #6
0
def test_conversation_save(conversation):
    """ also tests message.save() since we must create a message to save """
    message = Message(user_id=conversation.user_id,
                      conversation_id=conversation.id,
                      message="Hello World")
    conversation.save(message=message)
    assert conversation.shared_id is not None
Exemple #7
0
 def process_template_response(self, request, response):
     if request.path.startswith('/api/'):
         context_data = {'unread_mesg_count': 0}
         response.context_data = context_data
         return response
     else:
         context_data = {'unread_mesg_count': Message.unread_count(request)}
         response.context_data.update(context_data)
         return response
Exemple #8
0
    def test_that_messages_can_be_replied_to(self):
        """Tests that messages can be replied to.
        """
        message = Message(**self.msg_stub)
        message.save()
        self.assertIsNotNone(message.id)
        self.msg_stub['parent_msg'] = message

        reply_msg = Message(**self.msg_stub)
        reply_msg.save()
        self.assertIsNotNone(reply_msg.id)
        self.assertEqual(reply_msg.parent_msg, self.msg_stub['parent_msg'])
Exemple #9
0
    def post(self, request, *args, **kwargs):
        """Dispatch message to start a new conversation"""
        recipient_username = request.POST.get('recipient') or 'admin'
        recipient = User.objects.get(username=recipient_username)
        payload = {
            'subject': request.POST.get('subject'),
            'sender': User.objects.get(username=request.user.username),
            'body': request.POST.get('body'),
            'recipient': recipient,
        }  # create new message payload

        mesg = Message(**payload)
        mesg.sent_at = timezone.now()
        mesg.save()

        alert.add_message(
            request, alert.SUCCESS,
            'New conversation started with {}.'.format(recipient.username))

        return redirect(reverse('message', kwargs={'m_id': mesg.id}))
Exemple #10
0
 def test_that_messages_can_be_deleted(self):
     """Tests that messages can be deleted
     """
     message = Message(**self.msg_stub)
     message.save()
     self.assertIsNotNone(message.id)
     message.delete()
     self.assertIsNone(message.id)
Exemple #11
0
    def get(self, request, *args, **kwargs):
        # define the base breadcrumbs for this view:
        context = {
            'breadcrumbs': [
                {
                    'name': 'My Account',
                    'url': reverse('account')
                },
                {
                    'name': 'Merchant',
                    'url': reverse('account_merchant')
                },
                {
                    'name': 'Confirm Merchant',
                },
            ]
        }

        try:
            if request.user.profile.merchant:

                if (not Message.confirmation_sent(request.user)):
                    # send message to admin that a merchant has been enabled
                    body = """%s %s just verified his phone number.
                    He is awaiting approval for his request to
                    become a merchant.""" % (request.user.first_name,
                                             request.user.last_name)

                    Message.send('Account', 'Merchant Approval', body,
                                 request.user)
                    mesg = """A message has been sent to the admin with your
                    application to become a merchant."""
                    messages.add_message(request, messages.INFO, mesg)

                return TemplateResponse(request, self.template_name, context)

        except AttributeError:
            return redirect(reverse('account_profile'))
Exemple #12
0
    def post(self, request, m_id):
        """Dispatch a reply to a conversation"""
        recipient_username = request.POST.get('recipient') or 'admin'
        recipient = User.objects.get(username=recipient_username)
        parent_msg_id = request.POST.get('parent_msg')

        message = Message.objects.get(id=int(parent_msg_id))
        message.replied_at = timezone.now()
        message.save()  # update replied at
        parent_msg_id = Message.objects.get(id=m_id)

        payload = {
            'sender': User.objects.get(username=request.user.username),
            'parent_msg': message,
            'body': request.POST.get('body'),
            'recipient': recipient,
        }  # create reply payload
        reply = Message(**payload)
        reply.sent_at = timezone.now()
        reply.save()

        alert.add_message(request, alert.SUCCESS, 'Message sent successfully.')

        return redirect(reverse('message', kwargs={'m_id': message.id}))
Exemple #13
0
# Usage:
# python manage.py makemigrations
# python manage.py migrate
# python manage.py < populateDatabase.py

from conversations.models import Message
m = Message(text="This was a triumph", user_id=1)
m.save()
m2 = Message(text="I'm making a note here…", parent=m, user_id=1)
m2.save()
m3 = Message(text="Huge success", parent=m, user_id=1)
m3.save()
m4 = Message(text="It's hard to overstate my satisfaction", parent=m2, user_id=1)
m4.save()
Exemple #14
0
user2 = User.objects.create_user('clara', '*****@*****.**', 'clarapassword')
user2.first_name = "Clara"
user2.last_name = "Nees"
user2.save()

user3 = User.objects.create_user('joe', '*****@*****.**', 'joepassword')
user3.first_name = "Joe"
user3.last_name = "Pohlman"
user3.save()

user4 = User.objects.create_user('brendan', '*****@*****.**', 'brendanpassword')
user4.first_name = "Brendan"
user4.last_name = "Killalea"
user4.save()

b1 = Message(topic="Book Club", text="What should we read this month?", user=user1)
b1.save()
b2 = Message(text="Sci-fi!", parent=b1, user=u)
b2.save()
b3 = Message(text="Eh, how about something angsty with more symbolism than plot and an unsatisfactory ending?", parent=b2, user=user2)
b3.save()
b4 = Message(text="Ooh, fun! Misery is the best! Let's read something by Steinbeck!", parent=b3, user=user3)
b4.save()
b5 = Message(text="War and Peace!", parent=b3, user=user3)
b5.save()
b6 = Message(text="Staaaaaahhhhhhhp.", parent=b3, user=u)
b6.save()
b7 = Message(text="Dictionary, by Daniel Webster", parent=b1, user=user4)
b7.save()
b8 = Message(text="Diccionario de la lengua española - Edición del Tricentenario", parent=b7, user=user3)
b8.save()
Exemple #15
0
user2 = User.objects.create_user('clara', '*****@*****.**', 'clarapassword')
user2.first_name = "Clara"
user2.last_name = "Ness"
user2.save()

user3 = User.objects.create_user('joe', '*****@*****.**', 'joepassword')
user3.first_name = "Joe"
user3.last_name = "Pohlman"
user3.save()

user4 = User.objects.create_user('brendan', '*****@*****.**', 'brendanpassword')
user4.first_name = "Brendan"
user4.last_name = "Killalea"
user4.save()

# Add some messages
m1 = Message(text="ROOT 1", user=user1)
m1.save()
m2 = Message(text="1st CHILD OF ROOT 1", user=user2, parent=m1)
m2.save()
m3 = Message(text="2nd CHILD OF ROOT 1", user=user1, parent=m1)
m3.save()
m4 = Message(text="A descendant of root 1", user=user1, parent=m2)
m4.save()
m5 = Message(text="Another descendant of root 1", user=user2, parent=m3)
m5.save()
m6 = Message(text="Yet another descendant of root 1", user=user2, parent=m2)
m6.save()

m7 = Message(text="ROOT2", user=user4)
m7.save()
Exemple #16
0
user2 = User.objects.create_user('clara', '*****@*****.**', 'clarapassword')
user2.first_name = "Clara"
user2.last_name = "Nees"
user2.save()

user3 = User.objects.create_user('joe', '*****@*****.**', 'joepassword')
user3.first_name = "Joe"
user3.last_name = "Pohlman"
user3.save()

user4 = User.objects.create_user('brendan', '*****@*****.**', 'brendanpassword')
user4.first_name = "Brendan"
user4.last_name = "Killalea"
user4.save()

n1 = Message(topic="Good Nerf Guns?", text="I'm looking for some advice on dart based ballistics.", user=user1)
n1.save()
n2 = Message(user=user2, parent=n1, text="Dude, totally depends on what you're using for? We looking for a casual game of sissy darts or you wanna deal some real dammage?")
n2.save()
n3 = Message(user=user3, parent=n1, text="Maverick all the way")
n3.save()
n4 = Message(user=user1, parent=n2, text="There's this academic researcher that needs to be put in his place, I'm looking to bring the pain!")
n4.save()
n5 = Message(user=user2, parent=n4, text="The RapidStrike CS-18 is gonna be the best choice for you, you nefarious guy you.")
n5.save()
n6 = Message(user=user1, parent=n5, text="Nice! He'll never see it coming!.")
n6.save()
n7 = Message(user=user4, parent=n4, text="Lol, you should just hack his website or something. The duck flies at midnight, amiright!?")
n7.save()
n7 = Message(user=user3, parent=n4, text="Hey man, be careful whatever you do. You'd be surprised at how easy it is to track someones actions even if they try to delete their search histories and flee the country.")
n7.save()