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)
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)
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)
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