Co-authored-by: dlslo <dlslo@uwaterloo.ca> Reviewed-on: #648 Reviewed-by: Richard Shuai <r2shuai@csclub.uwaterloo.ca>
This commit is contained in:
parent
a5136eafaa
commit
89a1d7dea1
|
@ -1,9 +1,24 @@
|
|||
[
|
||||
{ "name": "Alexander Liao", "role": "Team Lead" },
|
||||
{ "name": "Muhammad Hamza" },
|
||||
{ "name": "Kushal Goel" },
|
||||
{ "name": "Cathie Yan" },
|
||||
{ "name": "Ryan Zhou" },
|
||||
{ "name": "Emily Huang" },
|
||||
{ "name": "Franklin Ramirez" }
|
||||
{
|
||||
"name": "Alexander Liao",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Muhammad Hamza"
|
||||
},
|
||||
{
|
||||
"name": "Kushal Goel"
|
||||
},
|
||||
{
|
||||
"name": "Cathie Yan"
|
||||
},
|
||||
{
|
||||
"name": "Ryan Zhou"
|
||||
},
|
||||
{
|
||||
"name": "Emily Huang"
|
||||
},
|
||||
{
|
||||
"name": "Franklin Ramirez"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,14 +1,40 @@
|
|||
[
|
||||
{ "name": "Anny Wei", "role": "Team Lead" },
|
||||
{ "name": "Kim Guo" },
|
||||
{ "name": "Shelley Chen" },
|
||||
{ "name": "MingMing Zhang" },
|
||||
{ "name": "Lucy Qi" },
|
||||
{ "name": "Roni Wu" },
|
||||
{ "name": "Jessica Chan" },
|
||||
{ "name": "Linda Wang" },
|
||||
{ "name": "Kelly Qu" },
|
||||
{ "name": "Prabhsharan Singh Sethi" },
|
||||
{ "name": "Lila Hoang" },
|
||||
{ "role": "Advisor", "name": "Cadey Chen" }
|
||||
{
|
||||
"name": "Anny Wei",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Jia Huang"
|
||||
},
|
||||
{
|
||||
"name": "Kim Guo"
|
||||
},
|
||||
{
|
||||
"name": "Prabhsharan Singh Sethi"
|
||||
},
|
||||
{
|
||||
"name": "Hailey Chan"
|
||||
},
|
||||
{
|
||||
"name": "Sayma Khan"
|
||||
},
|
||||
{
|
||||
"name": "Jessica Chan"
|
||||
},
|
||||
{
|
||||
"name": "Linda Wang"
|
||||
},
|
||||
{
|
||||
"name": "Kelly Qu"
|
||||
},
|
||||
{
|
||||
"name": "Lila Hoang"
|
||||
},
|
||||
{
|
||||
"name": "Lucy Qi"
|
||||
},
|
||||
{
|
||||
"name": "Cadey Chen",
|
||||
"role": "Advisor"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
[
|
||||
{
|
||||
"name": "Roger Cao",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Amy Wang"
|
||||
},
|
||||
{
|
||||
"name": "Eric Sheen"
|
||||
},
|
||||
{
|
||||
"name": "Gordon Lin"
|
||||
},
|
||||
{
|
||||
"name": "Logan Maier"
|
||||
},
|
||||
{
|
||||
"name": "Naman Sood"
|
||||
},
|
||||
{
|
||||
"name": "Laura Nguyen",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Sat Arora"
|
||||
},
|
||||
{
|
||||
"name": "Siimar Leen Kaur"
|
||||
}
|
||||
]
|
|
@ -1,12 +1,34 @@
|
|||
[
|
||||
{ "name": "Prabhav Khera", "role": "Team Lead"},
|
||||
{ "name": "Fan Yang", "role": "Team Lead" },
|
||||
{ "name": "Nicole Go" },
|
||||
{ "name": "David Gan" },
|
||||
{ "name": "Priyanshu Sharma" },
|
||||
{ "name": "Kavin Desi Valli" },
|
||||
{ "name": "Andy Si" },
|
||||
{ "name": "Richard Fan" },
|
||||
{ "role": "Advisor", "name": "Marcus Chan" },
|
||||
{ "role": "Advisor", "name": "Laura Nguyen" }
|
||||
{
|
||||
"name": "Prabhav Khera",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Fan Yang",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Patrick Huynh"
|
||||
},
|
||||
{
|
||||
"name": "Rosanne Zhu"
|
||||
},
|
||||
{
|
||||
"name": "Andy Si"
|
||||
},
|
||||
{
|
||||
"name": "David Gan"
|
||||
},
|
||||
{
|
||||
"name": "Edmond Li"
|
||||
},
|
||||
{
|
||||
"name": "Di Nguyen"
|
||||
},
|
||||
{
|
||||
"name": "Priyanshu Sharma"
|
||||
},
|
||||
{
|
||||
"name": "Marcus Chan"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,16 +1,66 @@
|
|||
[
|
||||
{ "name": "Anthony Wang", "role": "Team Lead" },
|
||||
{ "name": "Stella Tian", "role": "Team Lead" },
|
||||
{ "name": "Andrea Ma" },
|
||||
{ "name": "Nicholas Tao" },
|
||||
{ "name": "Zhehai Zhang" },
|
||||
{ "name": "Jonathan Shanmuganantham" },
|
||||
{ "name": "Angeline Garapati" },
|
||||
{ "name": "Harshitha Durai" },
|
||||
{ "name": "Samuel Bai" },
|
||||
{ "name": "Carter Moore" },
|
||||
{ "name": "Peter Lim" },
|
||||
{ "name": "Manasva Katyal" },
|
||||
{ "name": "Sydnie Chau" },
|
||||
{ "role": "Advisor", "name": "Sarah Wilson" }
|
||||
{
|
||||
"name": "Andrea Ma",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Nicholas Tao",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Stella Tian"
|
||||
},
|
||||
{
|
||||
"name": "Zhehai Zhang"
|
||||
},
|
||||
{
|
||||
"name": "Jonathan Shanmuganantham"
|
||||
},
|
||||
{
|
||||
"name": "Angeline Garapati"
|
||||
},
|
||||
{
|
||||
"name": "Harshitha Durai"
|
||||
},
|
||||
{
|
||||
"name": "Samuel Bai"
|
||||
},
|
||||
{
|
||||
"name": "Carter Moore"
|
||||
},
|
||||
{
|
||||
"name": "Peter Lim"
|
||||
},
|
||||
{
|
||||
"name": "Manasva Katyal"
|
||||
},
|
||||
{
|
||||
"name": "Sydnie Chau"
|
||||
},
|
||||
{
|
||||
"name": "Sarah Wilson",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Anthony Wang",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Aditya Bang"
|
||||
},
|
||||
{
|
||||
"name": "Vaaranan Yogalingam"
|
||||
},
|
||||
{
|
||||
"name": "Jason D'Souza"
|
||||
},
|
||||
{
|
||||
"name": "Joseph Perez"
|
||||
},
|
||||
{
|
||||
"name": "Oliver Mao"
|
||||
},
|
||||
{
|
||||
"name": "Molly Wu"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,8 +1,18 @@
|
|||
[
|
||||
{ "name": "Devin Yanche Li", "role": "Team Lead" },
|
||||
{ "name": "Julien Hongyi Liang" },
|
||||
{ "name": "David Kofman" },
|
||||
{ "name": "Advait Sangle" },
|
||||
{ "name": "Josephina Kim" },
|
||||
{ "name": "Jason D'Souza" }
|
||||
{
|
||||
"name": "Devin Yanche Li",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Julien Liang"
|
||||
},
|
||||
{
|
||||
"name": "David Kofman"
|
||||
},
|
||||
{
|
||||
"name": "Josephina Kim"
|
||||
},
|
||||
{
|
||||
"name": "Grace Yin"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,9 +1,22 @@
|
|||
[
|
||||
{ "name": "Arijit Chowdhury", "role": "Team Lead" },
|
||||
{ "name": "Sabina Gorbachev", "role": "Team Lead" },
|
||||
{ "name": "Martha Mengesha" },
|
||||
{ "name": "Krish Arora" },
|
||||
{ "name": "Lila Hoang" },
|
||||
{ "name": "Siimar Leen Kaur" },
|
||||
{ "role": "Advisor", "name": "Joshua Duho Kim" }
|
||||
{
|
||||
"name": "Arijit Chowdhury",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Lila Hoang",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Sophia Ho"
|
||||
},
|
||||
{
|
||||
"name": "Siimar Leen Kaur"
|
||||
},
|
||||
{
|
||||
"name": "Martha Mengesha"
|
||||
},
|
||||
{
|
||||
"name": "Krish Arora"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
[
|
||||
{
|
||||
"name": "Tiger Ding"
|
||||
},
|
||||
{
|
||||
"name": "Ivy Lei"
|
||||
},
|
||||
{
|
||||
"name": "Nathan Chung"
|
||||
},
|
||||
{
|
||||
"name": "Amy Wang"
|
||||
},
|
||||
{
|
||||
"name": "Andrea Ma"
|
||||
},
|
||||
{
|
||||
"name": "Felix Yang"
|
||||
},
|
||||
{
|
||||
"name": "Gordon Lin"
|
||||
},
|
||||
{
|
||||
"name": "Sean Zhang"
|
||||
},
|
||||
{
|
||||
"name": "Siimar Leen Kaur"
|
||||
},
|
||||
{
|
||||
"name": "Sat Arora"
|
||||
},
|
||||
{
|
||||
"name": "Saurin Patel"
|
||||
},
|
||||
{
|
||||
"name": "Ethan Kwon"
|
||||
},
|
||||
{
|
||||
"name": "Grace Feng"
|
||||
},
|
||||
{
|
||||
"name": "Kevin Cui"
|
||||
},
|
||||
{
|
||||
"name": "Laura Nguyen"
|
||||
},
|
||||
{
|
||||
"name": "Gaurav Talreja"
|
||||
},
|
||||
{
|
||||
"name": "Marcus Chan"
|
||||
},
|
||||
{
|
||||
"name": "Nikki Guo"
|
||||
},
|
||||
{
|
||||
"name": "Raymond Li"
|
||||
},
|
||||
{
|
||||
"name": "Richard Fan"
|
||||
},
|
||||
{
|
||||
"name": "Roger Cao"
|
||||
},
|
||||
{
|
||||
"name": "Shahan Nedadahandeh"
|
||||
},
|
||||
{
|
||||
"name": "Tejas Srikanth"
|
||||
},
|
||||
{
|
||||
"name": "Yi (Justin) Wang"
|
||||
},
|
||||
{
|
||||
"name": "Jessica Ding"
|
||||
}
|
||||
]
|
|
@ -1,9 +1,25 @@
|
|||
[
|
||||
{ "name": "Angela Xu", "role": "Team Lead" },
|
||||
{ "name": "Rami Abdul Rahim" },
|
||||
{ "name": "Helen Xia" },
|
||||
{ "name": "Varuni Gupta" },
|
||||
{ "name": "Evelina Zheng" },
|
||||
{ "role": "Advisor", "name": "Daniel Su" },
|
||||
{ "role": "Advisor", "name": "Bonnie Peng" }
|
||||
{
|
||||
"name": "Varuni Gupta",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Siyuan Zhao"
|
||||
},
|
||||
{
|
||||
"name": "Evelina Zheng"
|
||||
},
|
||||
{
|
||||
"name": "Enming Yang"
|
||||
},
|
||||
{
|
||||
"name": "Helen Xia"
|
||||
},
|
||||
{
|
||||
"name": "Gordon Lin"
|
||||
},
|
||||
{
|
||||
"name": "Daniel Su",
|
||||
"role": "Advisor"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,11 +1,29 @@
|
|||
[
|
||||
{ "name": "Gordon Lin", "role": "Team Lead" },
|
||||
{ "name": "Kim Guo" },
|
||||
{ "name": "Imane Yacoubi" },
|
||||
{ "name": "Ashnoor Randhawa" },
|
||||
{ "name": "Mayank Mehra" },
|
||||
{ "name": "Katherine Liu" },
|
||||
{ "name": "Franklin Ramirez" },
|
||||
{ "role": "Advisor", "name": "Ivy Lei" },
|
||||
{ "role": "Advisor", "name": "Kevin Cui" }
|
||||
{
|
||||
"name": "Kim Guo",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Tiger Ding"
|
||||
},
|
||||
{
|
||||
"name": "Katherine Liu"
|
||||
},
|
||||
{
|
||||
"name": "Ethan Kwon"
|
||||
},
|
||||
{
|
||||
"name": "Franklin Ramirez"
|
||||
},
|
||||
{
|
||||
"name": "Varuni Gupta"
|
||||
},
|
||||
{
|
||||
"name": "Imane Yacoubi",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Gordon Lin",
|
||||
"role": "Advisor"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,8 +1,21 @@
|
|||
[
|
||||
{ "name": "Nathan Chung", "role": "Team Lead" },
|
||||
{ "role": "Advisor", "name": "Raymond Li" },
|
||||
{ "role": "Advisor", "name": "Max Erenberg" },
|
||||
{ "role": "Advisor", "name": "Yiao Shen" },
|
||||
{ "name": "Rio Liu" },
|
||||
{ "name": "Edwin Zhang" }
|
||||
{
|
||||
"name": "Nathan Chung",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Raymond Li"
|
||||
},
|
||||
{
|
||||
"name": "Max Erenberg"
|
||||
},
|
||||
{
|
||||
"name": "Yiao Shen"
|
||||
},
|
||||
{
|
||||
"name": "Rio Liu"
|
||||
},
|
||||
{
|
||||
"name": "Edwin Zhang"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,19 +1,60 @@
|
|||
[
|
||||
{ "name": "Nathan Chung", "role": "Team Lead" },
|
||||
{ "role": "Advisor", "name": "Raymond Li" },
|
||||
{ "role": "Advisor", "name": "Max Erenberg" },
|
||||
{ "role": "Advisor", "name": "Yiao Shen" },
|
||||
{ "name": "Rio Liu" },
|
||||
{ "name": "Edwin Zhang" },
|
||||
{ "name": "Justin Chung" },
|
||||
{ "name": "Sean Zhang" },
|
||||
{ "name": "Jonathan Leung" },
|
||||
{ "name": "Young Wang" },
|
||||
{ "name": "Anthony Chen" },
|
||||
{ "name": "Eric Li" },
|
||||
{ "name": "Kevin Salapatek" },
|
||||
{ "name": "Ohm Patel" },
|
||||
{ "name": "Leon Zhang" },
|
||||
{ "name": "Yi (Justin) Wang" },
|
||||
{ "name": "Frank Tao" }
|
||||
{
|
||||
"name": "Nathan Chung",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Raymond Li",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Max Erenberg",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Yiao Shen",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Rio Liu"
|
||||
},
|
||||
{
|
||||
"name": "Edwin Zhang"
|
||||
},
|
||||
{
|
||||
"name": "Justin Chung"
|
||||
},
|
||||
{
|
||||
"name": "Yi (Justin) Wang"
|
||||
},
|
||||
{
|
||||
"name": "Jonathan Leung"
|
||||
},
|
||||
{
|
||||
"name": "Di Nguyen"
|
||||
},
|
||||
{
|
||||
"name": "Vincent Xie"
|
||||
},
|
||||
{
|
||||
"name": "Amol Venkataraman"
|
||||
},
|
||||
{
|
||||
"name": "Eric Li"
|
||||
},
|
||||
{
|
||||
"name": "Ohm Patel"
|
||||
},
|
||||
{
|
||||
"name": "Leon Zhang"
|
||||
},
|
||||
{
|
||||
"name": "Anthony Chen"
|
||||
},
|
||||
{
|
||||
"name": "Young Wang"
|
||||
},
|
||||
{
|
||||
"name": "Frank Tao"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,13 +1,38 @@
|
|||
[
|
||||
{ "name": "Darren Lo", "role": "Team Lead" },
|
||||
{ "name": "Richard Shuai", "role": "Team Lead" },
|
||||
{ "name": "Daniel Su" },
|
||||
{ "name": "Ryan Zhu" },
|
||||
{ "name": "Owen Pan" },
|
||||
{ "name": "Annie Sun" },
|
||||
{ "name": "Tejas Srikanth" },
|
||||
{ "role": "Advisor", "name": "Aditya Thakral" },
|
||||
{ "role": "Advisor", "name": "Neil Parikh" },
|
||||
{ "role": "Advisor", "name": "Shahan NedaDahandeh" },
|
||||
{ "role": "Advisor", "name": "Amy Wang" }
|
||||
{
|
||||
"name": "Darren Lo",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Richard Shuai",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Daniel Su"
|
||||
},
|
||||
{
|
||||
"name": "Ryan Zhu"
|
||||
},
|
||||
{
|
||||
"name": "Owen Pan"
|
||||
},
|
||||
{
|
||||
"name": "Tejas Srikanth"
|
||||
},
|
||||
{
|
||||
"name": "Aditya Thakral",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Neil Parikh",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Shahan NedaDahandeh",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Amy Wang",
|
||||
"role": "Advisor"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -15,11 +15,14 @@ import {
|
|||
getMemberImagePath,
|
||||
} from "@/lib/team";
|
||||
|
||||
import classProfileData from "../../content/team/class-profile-committee.json";
|
||||
import designData from "../../content/team/design-team.json";
|
||||
import discordModsData from "../../content/team/discord-mods-team.json";
|
||||
import discordData from "../../content/team/discord-team.json";
|
||||
import eventsData from "../../content/team/events-team.json";
|
||||
import externalData from "../../content/team/external-affairs-team.json";
|
||||
import marketingData from "../../content/team/marketing-team.json";
|
||||
import officeStaffData from "../../content/team/office-staff.json";
|
||||
import photographyData from "../../content/team/photography-team.json";
|
||||
import repsData from "../../content/team/representatives-team.json";
|
||||
import systemsData from "../../content/team/systems-committee.json";
|
||||
|
@ -159,6 +162,11 @@ export const getStaticProps: GetStaticProps<Props> = async () => {
|
|||
// Note that rawTeams do not contain image paths of members, even though
|
||||
// TypeScript thinks that it does. It's just to simplify some code.
|
||||
const rawTeams = [
|
||||
{
|
||||
id: "classProfile",
|
||||
name: "Class Profile",
|
||||
members: classProfileData,
|
||||
},
|
||||
{
|
||||
id: "reps",
|
||||
name: "Community Representatives",
|
||||
|
@ -174,11 +182,11 @@ export const getStaticProps: GetStaticProps<Props> = async () => {
|
|||
name: "Discord Bot (CodeyBot) Developers",
|
||||
members: discordData,
|
||||
},
|
||||
// {
|
||||
// id: "discord",
|
||||
// name: "Discord Moderators",
|
||||
// members: discordModsData,
|
||||
// },
|
||||
{
|
||||
id: "discord",
|
||||
name: "Discord Moderators",
|
||||
members: discordModsData,
|
||||
},
|
||||
{
|
||||
id: "events",
|
||||
name: "Events",
|
||||
|
@ -194,6 +202,11 @@ export const getStaticProps: GetStaticProps<Props> = async () => {
|
|||
name: "Marketing",
|
||||
members: marketingData,
|
||||
},
|
||||
{
|
||||
id: "officeStaff",
|
||||
name: "Office Staff",
|
||||
members: officeStaffData,
|
||||
},
|
||||
{
|
||||
id: "photography",
|
||||
name: "Photography",
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
# A script that takes in a CSC Contact Info spreadsheet as a .csv and generates the team pages
|
||||
|
||||
import argparse
|
||||
import csv
|
||||
import json
|
||||
|
||||
parser = argparse.ArgumentParser("updateTeam")
|
||||
parser.add_argument("teamFile", help="The team file as a .csv")
|
||||
args = parser.parse_args()
|
||||
file = args.teamFile
|
||||
|
||||
# Relative path of team folder
|
||||
team_dir = '../content/team'
|
||||
|
||||
# Read csv file rows
|
||||
with open(file) as f:
|
||||
csv_reader = csv.reader(f)
|
||||
rows = [[val.strip() for val in row] for row in csv_reader]
|
||||
|
||||
header = [val.lower() for val in rows[0]]
|
||||
body = rows[1:]
|
||||
|
||||
# Get column number of name, role, and team
|
||||
name_index = header.index('name')
|
||||
role_index = header.index('role')
|
||||
team_index = header.index('team')
|
||||
|
||||
# Standardize the team name for lookup later
|
||||
def format_team_name(team_name):
|
||||
return '-'.join(team_name.replace('\n', '').lower().split(' '))
|
||||
|
||||
# Map team names to their json file name
|
||||
def team_name_to_file_name(team_name):
|
||||
file_name_map = {
|
||||
'bots': 'discord-team',
|
||||
'design': 'design-team',
|
||||
'class-profile': 'class-profile-committee',
|
||||
'discord-mods' : 'discord-mods-team',
|
||||
'events' : 'events-team',
|
||||
'external-affairs': 'external-affairs-team',
|
||||
'marketing': 'marketing-team',
|
||||
'photography': 'photography-team',
|
||||
'reps': 'representatives-team',
|
||||
'syscom': 'systerms-committee',
|
||||
'termcom': 'terminal-committee',
|
||||
'web': 'web-committee',
|
||||
'office-staff': 'office-staff'
|
||||
}
|
||||
|
||||
return file_name_map[team_name]
|
||||
|
||||
# For a list of rows of members, generate a list of each members name and role
|
||||
def generate_team_data(team_members_entries):
|
||||
return [
|
||||
{ 'name': entry[name_index],
|
||||
**({'role': entry[role_index]} if entry[role_index] else {})
|
||||
}
|
||||
for entry in filter(lambda entry: entry[name_index] != '', team_members_entries)
|
||||
]
|
||||
|
||||
# Partition the rows by team
|
||||
def sort_team_entries(entries):
|
||||
team_entries = {}
|
||||
curr_team = None
|
||||
prev_index = 0
|
||||
for i, entry in enumerate(entries):
|
||||
if entry[team_index] != "":
|
||||
curr_team = format_team_name(entry[team_index])
|
||||
|
||||
if i + 1 >= len(entries) or entries[i+1][team_index] != "":
|
||||
team_entries[curr_team] = entries[prev_index:i+1]
|
||||
prev_index = i+1
|
||||
|
||||
return team_entries
|
||||
|
||||
all_team_data = {}
|
||||
sorted_team_entries = sort_team_entries(body)
|
||||
for team, team_members_entries in sorted_team_entries.items():
|
||||
all_team_data[team] = generate_team_data(team_members_entries)
|
||||
|
||||
# Dump the member lists into the corresponding files
|
||||
for team_name, team_data in all_team_data.items():
|
||||
file_name = team_name_to_file_name(team_name)
|
||||
|
||||
print(file_name)
|
||||
with open(f"{team_dir}/{file_name}.json", 'w') as f:
|
||||
json.dump(team_data, f, indent=2)
|
||||
f.write('\n')
|
Loading…
Reference in New Issue