Compare commits

...

41 Commits

Author SHA1 Message Date
Rebecca-Chou 5adebddec6 test placeholder
continuous-integration/drone/push Build is passing Details
2022-03-10 11:02:35 +08:00
Rebecca-Chou cafdf334fe final fix
continuous-integration/drone/push Build is passing Details
2022-03-10 10:42:49 +08:00
Rebecca-Chou 00caa70143 fix data type
continuous-integration/drone/push Build is passing Details
2022-03-10 10:31:57 +08:00
Rebecca-Chou ccd075fa84 resolve conflicts with main
continuous-integration/drone/push Build is passing Details
2022-03-10 01:09:45 +08:00
Rebecca-Chou 67afba862a fix type bug
continuous-integration/drone/push Build is passing Details
2022-03-10 00:51:18 +08:00
Rebecca-Chou 4c087b4af4 eliminate position name to keep in sync
continuous-integration/drone/push Build is failing Details
2022-03-10 00:38:37 +08:00
Rebecca-Chou 51bb491277 fix undefined bug
continuous-integration/drone/push Build is passing Details
2022-03-04 17:08:52 +08:00
Rebecca-Chou 2d9176256d Fix logic for fetching array
continuous-integration/drone/push Build is failing Details
2022-03-04 16:15:15 +08:00
Beihao Zhou 83b68a3ce3 Merge branch 'main' into b72zhou-ldap-exec
continuous-integration/drone/push Build is passing Details
2022-02-27 09:19:25 -05:00
Rebecca-Chou 856f849526 finalize ldap
continuous-integration/drone/push Build is passing Details
2022-02-17 11:42:05 +08:00
Rebecca-Chou 0c0515a3c6 fetch array at index 0 from ldap
continuous-integration/drone/push Build is passing Details
2022-02-17 10:58:42 +08:00
Rebecca-Chou 3dbc1efe39 test data type for position
continuous-integration/drone/push Build is passing Details
2022-02-17 00:06:08 +08:00
Rebecca-Chou f09580151f test position array
continuous-integration/drone/push Build is passing Details
2022-02-16 23:42:40 +08:00
Rebecca-Chou bb743f4ca6 test president
continuous-integration/drone/push Build is failing Details
2022-02-16 23:31:14 +08:00
Rebecca-Chou ca1a9f3185 debug sort function
continuous-integration/drone/push Build is passing Details
2022-02-16 21:45:37 +08:00
Rebecca-Chou 3506b6d00c test sort function
continuous-integration/drone/push Build is passing Details
2022-02-16 21:07:19 +08:00
Rebecca-Chou 615a8ddbf9 test filter function
continuous-integration/drone/push Build is passing Details
2022-02-16 20:50:40 +08:00
Rebecca-Chou 6dc69fbe14 get position test
continuous-integration/drone/push Build is passing Details
2022-02-16 20:29:32 +08:00
Rebecca-Chou 9a1ecf82bd edit president to presidentcro
continuous-integration/drone/push Build is passing Details
2022-02-16 20:15:27 +08:00
Rebecca-Chou f96d776259 Test position field 2
continuous-integration/drone/push Build is passing Details
2022-02-16 20:01:46 +08:00
Rebecca-Chou fe3358d9ae Test position field
continuous-integration/drone/push Build is passing Details
2022-02-16 19:35:13 +08:00
Rebecca-Chou 340dfa67b5 Add placeholder
continuous-integration/drone/push Build is passing Details
2022-02-14 11:45:30 +08:00
Rebecca-Chou 57f67bc8d1 edit codey file name
continuous-integration/drone/push Build is passing Details
2022-02-14 10:09:12 +08:00
Rebecca-Chou ae66794a54 add codey
continuous-integration/drone/push Build is failing Details
2022-02-14 09:59:58 +08:00
Rebecca-Chou be43b75694 change order of exec
continuous-integration/drone/push Build is passing Details
2022-02-14 09:33:00 +08:00
Beihao Zhou 2aeaeaccde Fix Line Format
continuous-integration/drone/push Build is failing Details
2022-02-13 11:32:05 -05:00
Beihao Zhou c729bf40ee Fix name order
continuous-integration/drone/push Build is failing Details
2022-02-13 11:22:28 -05:00
Rebecca-Chou 8b8432cf76 Change the order of exec name 2022-02-14 00:11:08 +08:00
Rebecca-Chou 3a7ec04f4e Debug ldap data fetch function
continuous-integration/drone/push Build is failing Details
2022-02-13 23:48:30 +08:00
Rebecca-Chou ae0b81c4cc debug getExecNames
continuous-integration/drone/push Build is failing Details
2022-02-10 01:35:23 +08:00
Rebecca-Chou c7947d9054 Test new getExecNames
continuous-integration/drone/push Build is passing Details
2022-02-10 01:22:09 +08:00
Rebecca-Chou 6ad38d1971 Test getExec function
continuous-integration/drone/push Build is failing Details
2022-02-10 01:01:39 +08:00
Rebecca-Chou 608f6342da Debug placeholder
continuous-integration/drone/push Build is passing Details
2022-02-10 00:44:56 +08:00
Rebecca-Chou fc3d3e11d3 Merge branch 'b72zhou-ldap-exec' of https://git.csclub.uwaterloo.ca/www/www-new into b72zhou-ldap-exec
continuous-integration/drone/push Build is passing Details
2022-02-09 21:31:00 +08:00
Rebecca-Chou 0f15953979 Fix Typo 2022-02-09 21:30:15 +08:00
Beihao Zhou cb17e15b22 Merge branch 'main' into b72zhou-ldap-exec
continuous-integration/drone/push Build is passing Details
2022-02-09 08:25:03 -05:00
Rebecca-Chou 79c5005652 add placeholder
continuous-integration/drone/push Build is passing Details
2022-02-09 21:22:38 +08:00
Rebecca-Chou 8f144983ef Test Ldap
continuous-integration/drone/push Build is failing Details
2022-02-02 21:48:21 +08:00
Rebecca-Chou fbcdec33eb Change returned data type
continuous-integration/drone/push Build is failing Details
2022-02-02 17:06:13 +08:00
Rebecca-Chou 6e8f7bba94 Test using console log
continuous-integration/drone/push Build is failing Details
2022-02-02 16:04:40 +08:00
Rebecca-Chou b06189f5f3 Test Ldap
continuous-integration/drone/push Build is failing Details
2022-02-02 15:32:53 +08:00
8 changed files with 109 additions and 23 deletions

View File

@ -1,6 +0,0 @@
---
name: Dina Orucevic
role: Assistant Vice President
---
Hi everyone, Im Dina, a rising 1B student in Systems Design Engineering! Im so glad I get the chance to lead a group of interested students to make the CS community even more inclusive, diverse, and engaging! In my free time I love snapping film photos, going to dog parks (even though I dont own a dog) and reading a good novel.

View File

@ -2,10 +2,30 @@ import { readFile, readdir, access } from "fs/promises";
import path from "path";
import matter from "gray-matter";
import { Client } from "ldapts";
import { serialize } from "next-mdx-remote/serialize";
import { getCurrentTerm } from "@/lib/events";
const EXECS_PATH = path.join("content", "team", "execs");
const fileType = ".md";
const { year, term } = getCurrentTerm();
const execPositions: { [name: string]: string } = {
president: "President",
"vice-president": "Vice President",
secretary: "Assistant Vice President",
treasurer: "Treasurer",
sysadmin: "System Administrator",
};
const positionNames: string[] = [
"president",
"vice-president",
"secretary",
"treasurer",
"sysadmin",
];
export interface Metadata {
name: string;
@ -13,23 +33,95 @@ export interface Metadata {
image: string;
}
export async function getExecNames() {
return (await readdir(EXECS_PATH))
.filter((name) => name.endsWith(fileType))
.map((name) => name.slice(0, -1 * fileType.length));
export async function getExecNamePosPairs() {
if (process.env.USE_LDAP?.toLowerCase() !== "true") {
return [["codey", "mascot"]];
}
const url = "ldap://ldap1.csclub.uwaterloo.ca";
const searchDN = "ou=People,dc=csclub,dc=uwaterloo,dc=ca";
const client = new Client({ url });
// position: name
const execMembers: { [name: string]: string } = {};
let formattedExec: [string, string][] = [];
try {
await client.bind("", "");
const { searchEntries } = await client.search(searchDN, {
scope: "sub",
filter: `(&(objectClass=member)(term=${(term as string).slice(
0,
1
)}${year}))`,
});
// item.position might be an array if the member has more than one position
searchEntries.forEach((item) => {
if (typeof item.position === "string" && item.position in execPositions) {
execMembers[item.position] = item.cn as string;
} else if (item.position instanceof Array) {
item.position.forEach((p) => {
if ((p as string) in execPositions) {
execMembers[p as string] = item.cn as string;
}
});
}
});
formattedExec = positionNames.map((position) => {
return [
`${execMembers[position].split(" ")[0].toLowerCase()}-${execMembers[
position
]
.split(" ")[1]
.toLowerCase()}`,
position,
];
});
formattedExec = [...formattedExec, ["codey", "mascot"]];
} finally {
await client.unbind();
}
return formattedExec;
}
export async function getExec(fileName: string, convert = true) {
const raw = await readFile(path.join(EXECS_PATH, `${fileName}${fileType}`));
const { content, data: metadata } = matter(raw);
const image =
(metadata.image as string | undefined) ??
(await getMemberImagePath(metadata.name));
export async function getExec(name: string, pos: string, convert = true) {
let content, metadata;
return {
content: convert ? await serialize(content) : content,
metadata: { ...metadata, image } as Metadata,
};
try {
const raw = await readFile(path.join(EXECS_PATH, `${name}${fileType}`));
({ content, data: metadata } = matter(raw));
const image = await getMemberImagePath(metadata.name);
return {
content: convert ? await serialize(content) : content,
metadata: { ...metadata, image } as Metadata,
};
} catch (err) {
// Capitalize the first letter of the first name and last name
const firstName =
name.split("-")[0][0].toUpperCase() + name.split("-")[0].slice(1);
const lastName =
name.split("-")[1][0].toUpperCase() + name.split("-")[1].slice(1);
const posName = execPositions[pos];
content = "Coming Soon";
metadata = {
name: `${firstName} ${lastName}`,
role: `${posName}`,
};
const image = await getMemberImagePath(metadata.name);
return {
content: convert ? await serialize(content) : content,
metadata: { ...metadata, image } as Metadata,
};
}
}
async function getImage(imgPath: string) {

View File

@ -11,7 +11,7 @@ import { TeamMemberCard } from "@/components/TeamMemberCard";
import { Title } from "@/components/Title";
import {
getExec,
getExecNames,
getExecNamePosPairs,
Metadata,
getMemberImagePath,
} from "@/lib/team";
@ -208,10 +208,10 @@ async function getTeamWithImages(team: TeamMember[]) {
}
export const getStaticProps: GetStaticProps<Props> = async () => {
const execNames = await getExecNames();
const execNamePosPairs = await getExecNamePosPairs();
const execs = (await Promise.all(
execNames.map((name) => getExec(name))
execNamePosPairs.map((posPairs) => getExec(posPairs[0], posPairs[1]))
)) as SerializedExec[];
const [