summaryrefslogtreecommitdiffstats
path: root/group_messaging/views.py
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-10-08 01:36:23 -0400
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-10-08 01:36:23 -0400
commitc522c86525b17486c114711a97550264dddcce80 (patch)
treeabd28d8db74a6b16e32b92a6f6520ea960eec2fd /group_messaging/views.py
parent11afbf71e06d4c3e4229e3a98e06b3a25f1e039c (diff)
downloadaskbot-c522c86525b17486c114711a97550264dddcce80.tar.gz
askbot-c522c86525b17486c114711a97550264dddcce80.tar.bz2
askbot-c522c86525b17486c114711a97550264dddcce80.zip
added sent mailbox, message counts in threads, fixed some bugs and added test cases
Diffstat (limited to 'group_messaging/views.py')
-rw-r--r--group_messaging/views.py23
1 files changed, 21 insertions, 2 deletions
diff --git a/group_messaging/views.py b/group_messaging/views.py
index 3d973dbe..cd1a74d3 100644
--- a/group_messaging/views.py
+++ b/group_messaging/views.py
@@ -12,6 +12,7 @@ import copy
import datetime
from coffin.template.loader import get_template
from django.contrib.auth.models import User
+from django.db import models
from django.forms import IntegerField
from django.http import HttpResponse
from django.http import HttpResponseNotAllowed
@@ -105,7 +106,12 @@ class NewThread(InboxView):
if missing:
result['success'] = False
result['missing_users'] = missing
- else:
+
+ if request.user.username in usernames:
+ result['success'] = False
+ result['self_message'] = True
+
+ if result.get('success', True):
recipients = get_personal_groups_for_users(users)
message = Message.objects.create_thread(
sender=request.user,
@@ -157,6 +163,8 @@ class ThreadsList(InboxView):
)
elif sender_id == -1:
threads = Message.objects.get_threads(recipient=request.user)
+ elif sender_id == request.user.id:
+ threads = Message.objects.get_sent_threads(sender=request.user)
else:
sender = User.objects.get(id=sender_id)
threads = Message.objects.get_threads(
@@ -181,6 +189,17 @@ class ThreadsList(InboxView):
thread_data['thread'] = thread
threads_data[thread.id] = thread_data
+ ids = [thread.id for thread in threads]
+ counts = Message.objects.filter(
+ id__in=ids
+ ).annotate(
+ responses_count=models.Count('descendants')
+ ).values('id', 'responses_count')
+ for count in counts:
+ thread_id = count['id']
+ responses_count = count['responses_count']
+ threads_data[thread_id]['responses_count'] = responses_count
+
last_visit_times = LastVisitTime.objects.filter(
user=request.user,
message__in=threads
@@ -243,7 +262,7 @@ class SendersList(InboxView):
"""get data about senders for the user"""
senders = SenderList.objects.get_senders_for_user(request.user)
senders = senders.values('id', 'username')
- return {'senders': senders}
+ return {'senders': senders, 'request_user_id': request.user.id}
class ThreadDetails(InboxView):