コード例 #1
0
def media_create(request, *args, **kwargs):
    if request.method == 'POST':
        contract_id = kwargs.get('pk')
        contract = Contract.objects.get(pk=contract_id)

        message = Message()
        message.sent_by = contract.discussion.influencer.user
        message.sent_to = contract.discussion.campaign.agent
        message.discussion = contract.discussion
        message.content = "I have uploaded post media. Please take a look at <a href='/campaigns/contracts/" + str(
            contract.id
        ) + "?post_actived=0d(this)'>here</a> and let me know your thought."
        message.save()

        res_dialog = asyncio.run(
            get_dialogs(request.session['chat_session_token'],
                        contract.discussion_id))
        asyncio.run(
            send_message(request.session['chat_session_token'],
                         res_dialog['_id'], message.content))

        media = Media()
        media.title = request.POST.get('media_title')
        media.media = request.FILES['media_file']
        media.file_name = request.FILES['media_file'].name
        media.upload_by = Influencer.objects.get(user=request.user)
        media.contract = contract
        media.save()

        return redirect('/campaigns/contracts/' + str(contract_id) +
                        '?post_actived=0')
コード例 #2
0
def create_message(request, *args, **kwargs):
    if request.method == 'POST':
        discussion_id = request.POST.get('discussion_id')
        if request.POST.get('dialog_id'):
            dialog_id = request.POST.get('dialog_id')
        discussion = Discussion.objects.get(pk=discussion_id)
        content = request.POST.get('content')
        type = request.POST.get('type')

        if type == 'CO':
            budget = request.POST.get('budget')
            contract = Contract()
            contract.contract_title = request.POST.get('title')
            contract.contract_terms = request.POST.get('terms')
            contract.contract_status = 'OF'
            contract.contract_budget = budget
            contract.discussion = discussion
            contract.save()
            content = content + "<br/>You can accept or decline this offer <a href='#' onclick='contract_agree(this)' data-id='" + str(
                contract.id) + "'>here</a>!"

        # QB chat send message from agent to influencer
        # asyncio.run(send_message(
        #     request.session['chat_session_token'],
        #     dialog_id,
        #     content
        # ))

        message = Message()
        if type == 'IA':
            message.sent_by = discussion.influencer.user
            message.sent_to = discussion.campaign.agent
        if type == 'AI' or type == 'CO':
            message.sent_by = discussion.campaign.agent
            message.sent_to = discussion.influencer.user

        message.discussion = discussion
        message.content = content
        message.save()

        if dialog_id:
            return HttpResponse(contract.id)
        else:
            return render(
                request, 'messages/message_body.html', {
                    'channel_messages':
                    Message.objects.filter(
                        discussion__id=discussion_id).order_by('sent_at'),
                })
コード例 #3
0
def contract_offer_agreement(request, *args, **kwargs):
    if request.method == 'POST':
        contract_id = kwargs.get('pk')
        contract = Contract.objects.get(pk=contract_id)
        agreement = request.POST.get('agreement')
        comment = request.POST.get('comment')

        message = Message()
        message.sent_by = contract.discussion.influencer.user
        message.sent_to = contract.discussion.campaign.agent
        message.discussion = contract.discussion

        content = ''
        contract_status = 'AC'
        if (agreement == 0):
            content = "The contract <span class='font-weight-bold'>" + contract.contract_title + "</span> has been declined.<br/>" + comment
            contract_status = 'DE'
        else:
            content = "<span class='text-success'>Congratulations!</span><br/>The contract <span class='font-weight-bold'>" + contract.contract_title + "</span> has been accepted.<br/>" + comment
        message.content = content
        message.save()

        contract.contract_status = contract_status
        contract.save()

        if request.POST.get('message_id'):
            message_id = request.POST.get('message_id')
            offer_message = Message.objects.get(pk=message_id)
            offer_message.content = offer_message.content.replace(
                "contract_agree(this)", "")
            offer_message.save()
            return render(
                request, 'messages/message_body.html', {
                    'channel_messages':
                    Message.objects.filter(
                        discussion=contract.discussion).order_by('sent_at'),
                })
        else:
            return HttpResponse(content)
コード例 #4
0
def media_agreement(request, *args, **kwargs):
    if request.method == 'GET':
        media_id = kwargs.get('pk')
        media = Media.objects.get(pk=media_id)
        agreement = request.GET.get('accepted')
        content = ''
        if agreement == 'true':
            media.status = 'AC'
            content = "Your post <span class='font-weight-bold'>" + media.title + "</span> has been accepted. Please post and let me know the post url."
        else:
            media.status = 'DE'
            content = "Your post <span class='font-weight-bold'>" + media.title + "</span> has been declined."
        media.save()

        if agreement == 'true':
            post = Post()
            post.media = media
            post.campaign = media.contract.discussion.campaign
            post.influencer = media.contract.discussion.influencer
            post.save()

        message = Message()
        message.sent_by = media.contract.discussion.campaign.agent
        message.sent_to = media.contract.discussion.influencer.user
        message.discussion = media.contract.discussion
        message.content = content
        message.save()

        res_dialog = asyncio.run(
            get_dialogs(request.session['chat_session_token'],
                        media.contract.discussion_id))
        asyncio.run(
            send_message(request.session['chat_session_token'],
                         res_dialog['_id'], message.content))

        return redirect('/campaigns/contracts/' + str(media.contract.id) +
                        '?post_actived=1')