def comment(request): if request.method == "POST": article_id = int(request.POST.get("article_id")) article = Article.objects.get(id=article_id) content = request.POST.get("comment") current_no = request.POST.get("current_no") to_comment_id = int(request.POST.get("to_comment_id", 0)) c = Comment(article=article, content=content, status=0) c.owner = request.user if to_comment_id != 0: to_comment = Comment.objects.get(id=to_comment_id) else: to_comment = None c.to_comment = to_comment c.save() if c.to_comment: msg = Message(owner=c.to_comment.owner, status=-1) msg.content = "{}回复了你的评论:{}".format(c.owner, c.to_comment.content) msg.link = "{}?page_no={}".format(c.article.id, current_no) else: msg = Message(owner=c.article.owner, status=-1) msg.content = "{}回复了你的文章;{}".format(c.owner, c.article.title) msg.link = "{}?page_no={}".format(c.article.id, current_no) msg.save() if Comment.objects.filter(id=c.id): a = {"status": "ok"} return json_response(a) else: a = "err" return json_response(a)
def create_client_message(request, *args, **kwargs): if request.method == 'POST': campaign_id = request.POST.get('campaign_id') campaign = Campaign.objects.get(pk=campaign_id) content = request.POST.get('content') type = request.POST.get('type') message = Message() if type == 'CA': message.sent_by = campaign.client message.sent_to = campaign.agent else: message.sent_by = campaign.agent message.sent_to = campaign.client message.campaign = campaign message.content = content message.save() return render( request, 'messages/client_message_body.html', { 'channel_messages': Message.objects.filter( campaign__id=campaign_id).order_by('sent_at'), 'description': campaign })
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')
def borrow_book(request): if request.method == "POST" and "bookid" in request.POST: borrower = request.user.id book = Book.objects.filter(id=request.POST["bookid"])[0] ownerid = book.ownerid msg = Message() msg.originid = borrower msg.targetid = ownerid msg.status = 0 msg.createdate = datetime.datetime.now() msg.content = request.POST["message"] msg.handler = "/book/apply/" msg.save() rel = Borrowrel() rel.bookid = book.id rel.owner = ownerid rel.borrower = borrower rel.createdate = datetime.datetime.now() rel.updatedate = datetime.datetime.now() rel.status = 0 rel.messageid = msg.id rel.save() return redirect("/book/borrowed/")
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'), })
def host_auto_find(): # 通过硬件检查结果得到 key_list = settings.REDIS_DB.keys("GD*_hc") host_list = [ key.split('_')[0] for key in key_list ] new_host_set = set(host_list) host_list = settings.REDIS_DB.get("all_host_list") if host_list is None: host_list = [] else: host_list = host_list.split(',') old_host_set = set(host_list) margin_set = new_host_set - old_host_set app = AppService.objects.get(app_name='HOST_STATUS') if margin_set: add_ip = get_ip(margin_set) msg = Message() msg.create_time = datetime.now() msg.occur_time = datetime.now() msg.content = "发现新主机, 主机ID:%s, 对应IP:%s" % (','.join(margin_set), ','.join(add_ip)) msg.save() ip_list = [] if app.ip_list: ip_list = app.ip_list.split(',') ip_list.extend(add_ip) app.ip_list = ','.join(filterIP(ip_list)) host_list = [] if app.host_list: host_list = app.host_list.split(',') app.host_list = ','.join( set(host_list) | margin_set ) app.save() # 根据监控项变化情况,同步监控点 sync_monitor_point(app) # 同步应用配置 sync_app_info(app) # 变更redis settings.REDIS_DB.set("all_host_list", ','.join(new_host_set))
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)
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')
def addEvaluation(request): uid = request.session['uid'] sid = request.POST['sid'] #篇id rid = request.POST.get('reply') try: user = User.objects.get(id=int(uid)) except User.DoesNotExist: raise Http404("用户查找失败") try: section = Section.objects.get(id=int(sid)) except Section.DoesNotExist: raise Http404("视频查找失败") if rid: try: reply = Discussion.objects.get(id=int(rid)) except Discussion.DoesNotExist: raise Http404("不存在回复对象") d = Discussion(section=section, publisher=user, reply=reply if rid else None, content=request.POST['content']) d.save() if rid: msg = Message(sender=user) msg.receiver = reply.publisher msg.subject = '用户' + user.username + '回复了你的消息:' msg.content = request.POST['content'] msg.save() #pian1.length = pian1.length+1 dict = {'Success': '添加成功'} return JsonResponse(dict, safe=False, json_dumps_params={'ensure_ascii': False})
def borrow_book(request): if request.method == 'POST' and 'bookid' in request.POST: borrower = request.user.id book = Book.objects.filter(id=request.POST['bookid'])[0] ownerid = book.ownerid msg = Message() msg.originid = borrower msg.targetid = ownerid msg.status = 0 msg.createdate = datetime.datetime.now() msg.content = request.POST['message'] msg.handler = '/book/library/' msg.save() rel = Borrowrel() rel.bookid = book.id rel.owner = ownerid rel.borrower = borrower rel.createdate = datetime.datetime.now() rel.status = 0 rel.messageid = msg.id rel.save() return redirect('/book/library/')