# -*- coding: utf-8 -*- import json from django.http import HttpResponseRedirect, HttpResponse from django.shortcuts import get_object_or_404 from django.views.generic import TemplateView, FormView from django.db.models import Q from django.utils import timezone from accounts.models import User from forms import ReplyForm, SendForm from models import Message class InboxView(TemplateView): """ returns template with user messages """ template_name = 'client/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 class MessageHistory(FormView): """ returns message history with one user and form to reply to it """ template_name = 'client/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 """ def message_reply(request, message_id): """ reply to message """ response = {'success': False} if request.POST: form = ReplyForm(request.POST) if form.is_valid(): parent_msg = get_object_or_404(Message, id=message_id) 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): """ send message to user with url=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')