Exemplo n.º 1
0
def group_snapshot_by_group_name_get(team_name: str,
                                     group_name: str) -> Response:
    """
    Get a snapshot about a group based on the group name.
    :param team_name: Unique name which identifies a team.
    :param group_name: Unique name which identifies a group within a team.
    :return: A response object for the GET API request.
    """
    group_row: Optional[RowProxy] = GroupDao.get_group(team_name=team_name,
                                                       group_name=group_name)

    if group_row is None:
        response = jsonify({
            'self': f'/v2/groups/snapshot/{team_name}/{group_name}',
            'group': f'/v2/groups/{team_name}/{group_name}',
            'group_snapshot': None,
            'error': 'the group does not exist'
        })
        response.status_code = 400
        return response

    group_dict = {key: value for key, value in group_row.items()}
    group = Group(group_dict)

    group_members: ResultProxy = GroupMemberDao.get_group_members(
        group_name=group_name, team_name=team_name)
    group_members_list = [{
        'username': member.username,
        'first': member.first,
        'last': member.last,
        'member_since': member.member_since,
        'user': member.user,
        'status': member.status
    } for member in group_members]

    # All group statistics are queried separately but combined into a single map
    statistics = compile_group_statistics(group_object=group)

    group_dict: dict = GroupData(group).__dict__

    try:
        group_dict['grouppic'] = group_dict['grouppic'].decode('utf-8')
    except AttributeError:
        pass

    group_dict['members'] = group_members_list
    group_dict['statistics'] = statistics

    response = jsonify({
        'self': f'/v2/groups/snapshot/{team_name}/{group_name}',
        'group': f'/v2/groups/{team_name}/{group_name}',
        'group_snapshot': group_dict
    })
    response.status_code = 200
    return response
Exemplo n.º 2
0
def group_members_by_group_name_get(team_name: str,
                                    group_name: str) -> Response:
    """
    Get the members of a group based on the group name.
    :param team_name: Unique name which identifies a team.
    :param group_name: Unique name which identifies a group within a team.
    :return: A response object for the GET API request.
    """
    group_members: ResultProxy = GroupMemberDao.get_group_members(
        group_name=group_name, team_name=team_name)

    if group_members is None or group_members.rowcount == 0:
        response = jsonify({
            'self':
            f'/v2/groups/members/{team_name}/{group_name}',
            'group':
            f'/v2/groups/{team_name}/{group_name}',
            'group_members':
            None,
            'error':
            'the group does not exist or there are no members in the group'
        })
        response.status_code = 400
        return response
    else:
        group_members_list = [{
            'username': member.username,
            'first': member.first,
            'last': member.last,
            'member_since': member.member_since,
            'user': member.user,
            'status': member.status
        } for member in group_members]

        response = jsonify({
            'self': f'/v2/groups/members/{team_name}/{group_name}',
            'group': f'/v2/groups/{team_name}/{group_name}',
            'group_members': group_members_list
        })
        response.status_code = 200
        return response