Thread subscribers working.
TODO: Implement thread read status per user. TODO: Implemented edit post functionality for privileged user.
This commit is contained in:
parent
6bf884da66
commit
970eea2979
@ -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}
|
||||
|
Loading…
Reference in New Issue
Block a user