示例#1
0
def send_message(request):
    """ 向某人发送信息 / 支持群发 """
    if request.method != 'POST':
        form = MessageForm()
    else:
        form = MessageForm(request.POST, request.FILES)
        if form.is_valid():
            tmp_message = form.save(commit=False)
            username_list = request.POST['receiver_id']
            username_list = re.split(r'[\s\,\;]+', username_list)
            for username in username_list:
                if username.strip() == "":
                    continue
                try:
                    receiver_user = User.objects.get(username=username.strip())
                except ObjectDoesNotExist:
                    return render(request, 'users/userIsNotExist.html')
                Message.objects.create(text=tmp_message.text,
                                       receiver=receiver_user,
                                       sender=request.user)
            return HttpResponseRedirect(reverse('home:home'))

    info_id = UserInfo.objects.get(user=request.user).id
    context = {'form': form, 'info_id': info_id}
    return render(request, 'users/send_message.html', context)
示例#2
0
文件: views.py 项目: miloft/chat
 def post(self, request, chat_id):
     form = MessageForm(data=request.POST)
     if form.is_valid():
         message = form.save(commit=False)
         message.chat_id = chat_id
         message.author = request.user
         message.save()
         url = '/dialogs/' + chat_id + '/'
         return HttpResponseRedirect(url)
     context = {'chat_id': chat_id}
     return render(request, 'users/messages.html', context=context)
示例#3
0
def read_message(request, message_id):
    """ 阅读消息完整内容并回复 """
    message = Message.objects.get(id=message_id)
    if request.user == message.receiver:
        message.is_read = True
        message.save()

    if request.method != 'POST':
        form = MessageForm()
    else:
        form = MessageForm(request.POST, request.FILES)
        if form.is_valid():
            new_message = form.save(commit=False)
            new_message.receiver = message.sender
            new_message.sender = request.user
            new_message.save()
            return HttpResponseRedirect(reverse('users:notice'))

    context = {'message': message, 'form': form}
    return render(request, 'users/read_message.html', context)
示例#4
0
def leave_message(request, the_id=None):
    if request.method == 'GET':
	if the_id:
	    try:
		the_id = int(the_id)
	    except ValueError:
		raise Http404
	else: raise Http404
	rcpt = User.objects.filter(pk=the_id)
	if not rcpt: raise Http404
	rcpt = rcpt[0]
	form = MessageForm()
	return render_to_response("users/leave_message.html", {
	    'user': request.user,
	    'rcpt': rcpt,
	    'form': form,
	}, context_instance=RequestContext(request))
    elif request.method == 'POST':
	if request.POST.has_key('xhr'):
	    r = HttpResponse(mimetype="text/xml")
	    r.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
	    def fail():
		r.write("<result><msg>failure</msg></result>")
		return r
	else:
	    def fail():
		raise Http404
	if request.POST.has_key('rcpt'):
	    try:
		rcpt = int(request.POST['rcpt'])
	    except ValueError:
		return fail()
	
	    rcpt = User.objects.filter(pk=rcpt)
	    if not rcpt:
		return fail()
	    rcpt = rcpt[0]
	else:
	    return fail()
	form = MessageForm(request.POST)
	if form.is_valid():
	    form.save(request, rcpt)
	    if request.user.attrs.has_key('sent_messages'):
		request.user.attrs['sent_messages'] += 1
	    else:
		request.user.attrs['sent_messages'] = 1
	    request.user.save()
	    if rcpt.attrs.has_key('inbox'):
		rcpt.attrs['inbox'] += 1
	    else:
		rcpt.attrs['inbox'] = 1
	    rcpt.save()
	    if request.POST.has_key('xhr'):
		r.write("<result><msg>success</msg></result>")
		return r
	    return HttpResponseRedirect('/messages/sent/')
	if request.POST.has_key('xhr'):
	    r.write("<result><msg>failure</msg></result>")
	    return r
	return render_to_response("users/leave_message.html", {
	    'user': request.user,
	    'form': form,
	}, context_instance=RequestContext(request))
    raise Http404
def leave_message(request, the_id=None):
    if request.method == 'GET':
        if the_id:
            try:
                the_id = int(the_id)
            except ValueError:
                raise Http404
        else:
            raise Http404
        rcpt = User.objects.filter(pk=the_id)
        if not rcpt: raise Http404
        rcpt = rcpt[0]
        form = MessageForm()
        return render_to_response("users/leave_message.html", {
            'user': request.user,
            'rcpt': rcpt,
            'form': form,
        },
                                  context_instance=RequestContext(request))
    elif request.method == 'POST':
        if request.POST.has_key('xhr'):
            r = HttpResponse(mimetype="text/xml")
            r.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")

            def fail():
                r.write("<result><msg>failure</msg></result>")
                return r
        else:

            def fail():
                raise Http404

        if request.POST.has_key('rcpt'):
            try:
                rcpt = int(request.POST['rcpt'])
            except ValueError:
                return fail()

            rcpt = User.objects.filter(pk=rcpt)
            if not rcpt:
                return fail()
            rcpt = rcpt[0]
        else:
            return fail()
        form = MessageForm(request.POST)
        if form.is_valid():
            form.save(request, rcpt)
            if request.user.attrs.has_key('sent_messages'):
                request.user.attrs['sent_messages'] += 1
            else:
                request.user.attrs['sent_messages'] = 1
            request.user.save()
            if rcpt.attrs.has_key('inbox'):
                rcpt.attrs['inbox'] += 1
            else:
                rcpt.attrs['inbox'] = 1
            rcpt.save()
            if request.POST.has_key('xhr'):
                r.write("<result><msg>success</msg></result>")
                return r
            return HttpResponseRedirect('/messages/sent/')
        if request.POST.has_key('xhr'):
            r.write("<result><msg>failure</msg></result>")
            return r
        return render_to_response("users/leave_message.html", {
            'user': request.user,
            'form': form,
        },
                                  context_instance=RequestContext(request))
    raise Http404