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
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