From 89a1d7dea13bc1eb9e8a5b4b88ac045d418ae3b0 Mon Sep 17 00:00:00 2001 From: Darren Lo Date: Fri, 26 Jan 2024 19:51:25 -0500 Subject: [PATCH] Update team page (#648) Co-authored-by: dlslo Reviewed-on: https://git.csclub.uwaterloo.ca/www/www-new/pulls/648 Reviewed-by: Richard Shuai --- content/team/class-profile-committee.json | 29 ++++++-- content/team/design-team.json | 50 +++++++++---- content/team/discord-mods-team.json | 31 ++++++++ content/team/discord-team.json | 42 ++++++++--- content/team/events-team.json | 78 ++++++++++++++++---- content/team/external-affairs-team.json | 22 ++++-- content/team/marketing-team.json | 27 +++++-- content/team/office-staff.json | 77 ++++++++++++++++++++ content/team/photography-team.json | 30 ++++++-- content/team/representatives-team.json | 36 +++++++--- content/team/systems-committee.json | 25 +++++-- content/team/terminal-committee.json | 75 ++++++++++++++----- content/team/web-committee.json | 47 +++++++++--- pages/about/team.tsx | 23 ++++-- scripts/updateTeam.py | 88 +++++++++++++++++++++++ 15 files changed, 569 insertions(+), 111 deletions(-) create mode 100644 content/team/discord-mods-team.json create mode 100644 content/team/office-staff.json create mode 100644 scripts/updateTeam.py diff --git a/content/team/class-profile-committee.json b/content/team/class-profile-committee.json index ad4d2b83..3faf4963 100644 --- a/content/team/class-profile-committee.json +++ b/content/team/class-profile-committee.json @@ -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" + } ] diff --git a/content/team/design-team.json b/content/team/design-team.json index 8e01bd9d..6c3b4094 100644 --- a/content/team/design-team.json +++ b/content/team/design-team.json @@ -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" + } ] diff --git a/content/team/discord-mods-team.json b/content/team/discord-mods-team.json new file mode 100644 index 00000000..38464591 --- /dev/null +++ b/content/team/discord-mods-team.json @@ -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" + } +] diff --git a/content/team/discord-team.json b/content/team/discord-team.json index 8a9358f0..0fffcd86 100644 --- a/content/team/discord-team.json +++ b/content/team/discord-team.json @@ -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" + } ] diff --git a/content/team/events-team.json b/content/team/events-team.json index 994008d1..32216386 100644 --- a/content/team/events-team.json +++ b/content/team/events-team.json @@ -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" + } ] diff --git a/content/team/external-affairs-team.json b/content/team/external-affairs-team.json index d02b8de6..b8ac323e 100644 --- a/content/team/external-affairs-team.json +++ b/content/team/external-affairs-team.json @@ -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" + } ] diff --git a/content/team/marketing-team.json b/content/team/marketing-team.json index 9ce99e5d..c317f059 100644 --- a/content/team/marketing-team.json +++ b/content/team/marketing-team.json @@ -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" + } ] diff --git a/content/team/office-staff.json b/content/team/office-staff.json new file mode 100644 index 00000000..f3e47950 --- /dev/null +++ b/content/team/office-staff.json @@ -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" + } +] diff --git a/content/team/photography-team.json b/content/team/photography-team.json index 5e3591dd..9dc70765 100644 --- a/content/team/photography-team.json +++ b/content/team/photography-team.json @@ -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" + } ] diff --git a/content/team/representatives-team.json b/content/team/representatives-team.json index 1ea92325..11dd3e88 100644 --- a/content/team/representatives-team.json +++ b/content/team/representatives-team.json @@ -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" + } ] diff --git a/content/team/systems-committee.json b/content/team/systems-committee.json index e333cab3..c43363bf 100644 --- a/content/team/systems-committee.json +++ b/content/team/systems-committee.json @@ -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" + } ] diff --git a/content/team/terminal-committee.json b/content/team/terminal-committee.json index b944f401..ea0d2180 100644 --- a/content/team/terminal-committee.json +++ b/content/team/terminal-committee.json @@ -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" + } ] diff --git a/content/team/web-committee.json b/content/team/web-committee.json index aca17169..8fab38f9 100644 --- a/content/team/web-committee.json +++ b/content/team/web-committee.json @@ -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" + } ] diff --git a/pages/about/team.tsx b/pages/about/team.tsx index bf5bef3a..cf448a22 100644 --- a/pages/about/team.tsx +++ b/pages/about/team.tsx @@ -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 = 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 = 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 = async () => { name: "Marketing", members: marketingData, }, + { + id: "officeStaff", + name: "Office Staff", + members: officeStaffData, + }, { id: "photography", name: "Photography", diff --git a/scripts/updateTeam.py b/scripts/updateTeam.py new file mode 100644 index 00000000..f2423839 --- /dev/null +++ b/scripts/updateTeam.py @@ -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') \ No newline at end of file