예제 #1
0
def thread_author(thread: Thread, user=None):
    """
    Thread author JSON representation, from Thread object.

    :param thread: Thread object
    :param user:   Requesting User object
    :return: Thread author object JSON representation
    """
    if user is None or user.id != thread.author:
        # If requesting user is None or different from Thread Original Poster, request OP User object
        user = User.query.get(thread.author)

    if user is None:
        # IMPOSSIBLE - User cannot be None at this point
        raise AssertionError('Author has to be present')
    elif thread.anon:
        # If Anonymous is set, returns gender and authid
        # TODO: implement chat requests
        return {'gender': user.get_gender(), 'authid': thread.get_author_authid(), 'chat': get_request(thread, user)}
    else:
        # TODO: implement chat requests
        return {
            'nickname':   user.nickname,
            'university': University.query.get(user.university).name,
            'gender':     user.gender,
            'chat':       get_request(thread, user)
        }
예제 #2
0
def post_author(post: Post, thread: Thread, user=None):
    """
    Post author JSON representation, from Post object.

    :param post:   Post object
    :param thread: Thread parent object
    :param user:   Requesting User object
    :return: Post author object JSON representation
    """
    if user is None or user.id != post.author:
        user = User.query.get(post.author)

    if user is None:
        raise AssertionError('Author has to be present')
    elif post.anon:
        return {'gender': user.get_gender(), 'authid': post.get_authid(), 'chat': get_request(thread, user)}
    else:
        # TODO: implement chat requests
        return {
            'nickname':   user.nickname,
            'university': University.query.get(user.university).name,
            'gender':     user.gender,
            'chat':       get_request(thread, user)
        }