Esempio n. 1
0
def view_profile_collection(request):
    ctx = request.context
    view = request.GET.get('view', None) or ctx.get_default_view() or 'default'
    content = collection_view(request)
    if view != "id_only":
        discussion = ctx.get_instance_of_class(Discussion)
        if discussion:
            from assembl.models import Post, AgentProfile
            num_posts_per_user = \
                AgentProfile.count_posts_in_discussion_all_profiles(discussion)
            for x in content:
                id = AgentProfile.get_database_id(x['@id'])
                if id in num_posts_per_user:
                    x['post_count'] = num_posts_per_user[id]
    return content
Esempio n. 2
0
def view_profile_collection(request):
    ctx = request.context
    view = request.GET.get('view', None) or ctx.get_default_view() or 'default'
    content = collection_view(request)
    if view != "id_only":
        discussion = ctx.get_instance_of_class(Discussion)
        if discussion:
            from assembl.models import Post, AgentProfile
            num_posts_per_user = \
                AgentProfile.count_posts_in_discussion_all_profiles(discussion)
            for x in content:
                id = AgentProfile.get_database_id(x['@id'])
                if id in num_posts_per_user:
                    x['post_count'] = num_posts_per_user[id]
    return content
Esempio n. 3
0
def _get_agents_real(discussion, user_id=None, view_def='default'):
    user_id = user_id or Everyone
    agents = discussion.get_participants_query()
    permissions = get_permissions(user_id, discussion.id)
    include_emails = P_ADMIN_DISC in permissions or P_SYSADMIN in permissions
    if include_emails:
        agents = agents.options(joinedload(AgentProfile.accounts))
    num_posts_per_user = \
        AgentProfile.count_posts_in_discussion_all_profiles(discussion)

    def view(agent):
        result = agent.generic_json(view_def, user_id, permissions)
        if result is None:
            return
        if include_emails or agent.id == user_id:
            result['preferred_email'] = agent.get_preferred_email()
        post_count = num_posts_per_user.get(agent.id, 0)
        if post_count:
            result['post_count'] = post_count
        return result
    return [view(agent) for agent in agents if agent is not None]
Esempio n. 4
0
def _get_agents_real(discussion, user_id=None, view_def='default'):
    user_id = user_id or Everyone
    agents = discussion.get_participants_query()
    permissions = get_permissions(user_id, discussion.id)
    include_emails = P_ADMIN_DISC in permissions or P_SYSADMIN in permissions
    if include_emails:
        agents = agents.options(joinedload(AgentProfile.accounts))
    num_posts_per_user = \
        AgentProfile.count_posts_in_discussion_all_profiles(discussion)

    def view(agent):
        result = agent.generic_json(view_def, user_id, permissions)
        if result is None:
            return
        if include_emails or agent.id == user_id:
            result['preferred_email'] = agent.get_preferred_email()
        post_count = num_posts_per_user.get(agent.id, 0)
        if post_count:
            result['post_count'] = post_count
        return result

    return [view(agent) for agent in agents if agent is not None]
Esempio n. 5
0
def test_count_posts_in_discussion_all_profiles(test_app, discussion,
                                                admin_user, proposals):
    from assembl.models import AgentProfile
    result = AgentProfile.count_posts_in_discussion_all_profiles(discussion)
    assert result[admin_user.id] == 15
Esempio n. 6
0
def test_count_posts_in_discussion_all_profiles(test_app, discussion, admin_user, proposals):
    from assembl.models import AgentProfile
    result = AgentProfile.count_posts_in_discussion_all_profiles(discussion)
    assert result[admin_user.id] == 15