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