You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

110 lines
3.8 KiB

# -*- coding: utf-8 -*-
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import render_to_response, get_object_or_404
from django.views.generic import ListView, DetailView, TemplateView, FormView
from accounts.models import User
from django.db.models import Q
from django.utils import timezone
from forms import ComposeForm, ReplyForm, SendForm
from models import Message
import json
class InboxView(TemplateView):
template_name = 'accounts/messages.html'
def get_context_data(self, **kwargs):
context = super(InboxView, self).get_context_data(**kwargs)
senders = Message.objects.senders(self.request.user)
context['senders'] = [{'sender': s, 'message': Message.objects.filter(recipient=self.request.user, sender=s)[0]}\
for s in senders]
reply_form = ReplyForm()
context['reply_form'] = reply_form
return context
def message_reply(request, message_id):
response = {'success': False}
if request.POST:
form = ReplyForm(request.POST)
if form.is_valid():
parent_msg =get_object_or_404(Message, id=message_id)# Message.objects.get(id=parent)
form.save(sender=request.user, parent_msg=parent_msg)
response['success'] = True
return HttpResponse(json.dumps(response), content_type='application/json')
else:
return HttpResponse('error')
return HttpResponse('not ajax')
def send_message(request, url):
response = {'success': False}
try:
url = int(url)
recipient = get_object_or_404(User, id=url)
except ValueError:
recipient = get_object_or_404(User, url=url)
if request.POST:
form = SendForm(request.POST)
if form.is_valid():
form.save(sender=request.user, recipient=recipient)
response['success'] = True
return HttpResponse(json.dumps(response), content_type='application/json')
else:
return HttpResponse('error')
return HttpResponse('not ajax')
class MessageHistory(FormView):
template_name = 'accounts/messages_history.html'
form_class = ReplyForm
success_url = ''
def get_initial(self):
return {'recipient':self.kwargs.get('user_id')}
def get_context_data(self, **kwargs):
now = timezone.now()
context = super(MessageHistory, self).get_context_data(**kwargs)
user = self.kwargs.get('user_id')
messages = Message.objects.filter(
Q(sender=self.request.user, recipient=user) |
Q(sender=user, recipient=self.request.user)
)[:15]
Message.objects.filter(sender=user, recipient=self.request.user).update(read_at=now)
context['profile_messages'] = messages
return context
def form_invalid(self, form):
user_id = self.kwargs.get('user_id')
return HttpResponseRedirect('/profile/messages/history/'+user_id+'/')
def form_valid(self, form):
form.save(sender=self.request.user)
user_id = self.kwargs.get('user_id')
return HttpResponseRedirect('/profile/messages/history/'+user_id+'/')
"""
class ReplyView(FormView):
form_class = ComposeForm
template_name = 'message_reply.html'
def form_valid(self, form):
form.save(sender=self.request.user, parent_msg=self.parent)
messages.info(self.request, _(u"Message successfully sent."))
return HttpResponseRedirect('/profile/messages')
def get_context_data(self, **kwargs):
context = super(InboxView, self).get_context_data(**kwargs)
parent = self.kwargs.get('self.message_id')
parent_msg =get_object_or_404(Message, id=parent)# Message.objects.get(id=parent)
context['parent_msg'] = parent_msg
return context
"""