From 970eea2979ff013ad136a03061fd4b24054cc20f Mon Sep 17 00:00:00 2001 From: Tanshu Date: Fri, 7 Jun 2013 15:55:12 +0530 Subject: [PATCH] Thread subscribers working. TODO: Implement thread read status per user. TODO: Implemented edit post functionality for privileged user. --- brewman/brewman/views/messaging.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/brewman/brewman/views/messaging.py b/brewman/brewman/views/messaging.py index 53851868..22e33525 100644 --- a/brewman/brewman/views/messaging.py +++ b/brewman/brewman/views/messaging.py @@ -5,6 +5,7 @@ from pyramid.security import authenticated_userid from pyramid.view import view_config from sqlalchemy.orm import joinedload_all import transaction +from brewman import groupfinder from brewman.models import DBSession from brewman.models.auth import User @@ -23,6 +24,7 @@ def html(request): @TryCatchFunction def save(request): user_id = uuid.UUID(authenticated_userid(request)) + user_name = User.by_id(user_id).name thread = Thread(title=request.json_body['Title'], priority=request.json_body['Priority'], user_id=user_id) DBSession.add(thread) for item in request.json_body['Posts']: @@ -38,6 +40,8 @@ def save(request): tag = Tag(name=name) DBSession.add(tag) thread.tags.append(tag) + if user_name not in request.json_body['Subscribers']: + request.json_body['Subscribers'].append(user_name) for item in request.json_body['Subscribers']: subscriber = Subscriber(user_id=User.by_name(item).id, read=False) thread.subscribers.append(subscriber) @@ -101,12 +105,12 @@ def show_id(request): @view_config(request_method='GET', route_name='api_message', renderer='json', request_param='list') def show_list(request): + user_id = None if authenticated_userid(request) is None else uuid.UUID(authenticated_userid(request)) list = Thread.query().filter(Thread.closed == False) - # Thread.subscribers, Thread.posts, - if authenticated_userid(request) is None: + if user_id is None: list = list.filter(Thread.public == True) - # else: - # list.filter(Thread.subscribers.any(Subscriber.user_id == uuid.UUID(authenticated_userid(request)))) + elif 'Messages' not in groupfinder(user_id, request): + list = list.filter(Thread.subscribers.any(Subscriber.user_id == user_id)) list = list.order_by(Thread.priority).all() tags = {} threads = [] @@ -126,9 +130,9 @@ def show_list(request): for post in item.posts: if post.creation_date > last_updated: last_updated = post.creation_date - # thread['Posts'].append({'PostID': post.id, 'Content': post.content, 'User': post.user.name, - # 'Date': post.date.strftime('%d-%b-%Y %H:%M'), - # 'CreationDate': post.creation_date.strftime('%d-%b-%Y %H:%M')}) + # thread['Posts'].append({'PostID': post.id, 'Content': post.content, 'User': post.user.name, + # 'Date': post.date.strftime('%d-%b-%Y %H:%M'), + # 'CreationDate': post.creation_date.strftime('%d-%b-%Y %H:%M')}) threads.append(thread) thread['LastUpdated'] = get_age(last_updated) return {'Tags': tags, 'Threads': threads}