Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
ac8aec2
implemented backend logic for retrieving and updating a user profile
ElaineShu0312 Jul 30, 2024
35c2515
fixed the permissions so that there is separation of concerns, + fixe…
ElaineShu0312 Aug 6, 2024
33bc020
wrote tests for user.py and fixed bugs, passing all 10
ElaineShu0312 Aug 7, 2024
a48d202
fixed little bug in test
ElaineShu0312 Aug 7, 2024
cb4d2aa
dynamic user routing works now I think
ElaineShu0312 Aug 8, 2024
242c18c
finished profile form
ElaineShu0312 Aug 21, 2024
3e6d7f9
hopefully resolved one of the merge errors
ElaineShu0312 Oct 1, 2024
bbc335f
created AWS bucket and tried to link it to backend
ElaineShu0312 Oct 1, 2024
2c5efa1
configured settings for Image bucket
ElaineShu0312 Oct 9, 2024
52f828e
clean slate
ElaineShu0312 Oct 16, 2024
2b3573d
created component and view for testing the upload image pipeline
ElaineShu0312 Oct 16, 2024
7ab25be
trying to figure out image upload json error
ElaineShu0312 Oct 23, 2024
c8bd6ff
pillow image validation
ElaineShu0312 Nov 21, 2024
8bdfc37
Fixed image validation with other minor fixes
jacovkim Dec 5, 2024
aa2e655
Added UI features on section enrollment page (#509)
edwardneo Nov 6, 2024
9a79f9b
Added CSS
jacovkim Jan 31, 2025
7d03638
Added preferred name, overhauled profile upload UI, fixed profile que…
edwardneoprime Feb 1, 2025
b576212
Completed profiles -- (re)connected S3 bucket, added signed URLs, cre…
edwardneoprime Feb 2, 2025
883cc6f
Add profile photo upload logic
edwardneo Sep 5, 2025
eadff83
Clean up S3 profile photo storage flow
edwardneo Sep 5, 2025
093a56e
Fix preferred name update bug
edwardneo Sep 5, 2025
13e8530
Allow deletion of profile picture
edwardneo Sep 6, 2025
abeb18c
Standardize hyperlink colors
edwardneo Sep 6, 2025
32e1a64
Add profile tooltip and change profile viewing logic to be more restr…
edwardneo Sep 6, 2025
dbb98ac
Add bios page for courses, fix word wrapping
edwardneo Sep 6, 2025
37d3179
Add dynamic tooltip on user roles, bios link to separate page, and ot…
edwardneo Sep 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion csm_web/csm_web/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
"frontend",
"django_extensions",
"django.contrib.postgres",
"storages",
]

SHELL_PLUS_SUBCLASSES_IMPORT = [ModelSerializer, Serializer, DjangoModelFactory]
Expand Down Expand Up @@ -172,7 +173,7 @@
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
AWS_S3_VERIFY = True
AWS_QUERYSTRING_AUTH = False # public bucket
AWS_QUERYSTRING_AUTH = True

STORAGES = {
"default": {"BACKEND": "storages.backends.s3boto3.S3Boto3Storage"},
Expand Down Expand Up @@ -239,6 +240,8 @@
"DEFAULT_PERMISSION_CLASSES": ["rest_framework.permissions.IsAuthenticated"],
"DEFAULT_PARSER_CLASSES": [
"djangorestframework_camel_case.parser.CamelCaseJSONParser",
"rest_framework.parsers.FormParser",
"rest_framework.parsers.MultiPartParser",
],
}

Expand Down
7 changes: 6 additions & 1 deletion csm_web/frontend/src/components/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { emptyRoles, Roles } from "../utils/user";
import CourseMenu from "./CourseMenu";
import Home from "./Home";
import Policies from "./Policies";
import UserProfile from "./UserProfile";
import { DataExport } from "./data_export/DataExport";
import { EnrollmentMatcher } from "./enrollment_automation/EnrollmentMatcher";
import { Resources } from "./resource_aggregation/Resources";
Expand Down Expand Up @@ -42,6 +43,7 @@ const App = () => {
<Route path="matcher/*" element={<EnrollmentMatcher />} />
<Route path="policies/*" element={<Policies />} />
<Route path="export/*" element={<DataExport />} />
<Route path="profile/*" element={<UserProfile />} />
<Route path="*" element={<NotFound />} />
</Route>
</Routes>
Expand Down Expand Up @@ -80,7 +82,7 @@ function Header(): React.ReactElement {
};

/**
* Helper function to determine class name for the home NavLInk component;
* Helper function to determine class name for the home NavLink component;
* is always active unless we're in another tab.
*/
const homeNavlinkClass = () => {
Expand Down Expand Up @@ -141,6 +143,9 @@ function Header(): React.ReactElement {
<NavLink to="/policies" className={navlinkClassSubtitle}>
<h3 className="site-subtitle">Policies</h3>
</NavLink>
<NavLink to="/profile" className={navlinkClassSubtitle}>
<h3 className="site-subtitle">Profile</h3>
</NavLink>
<a id="logout-btn" href="#" onClick={logout} title="Log out">
<LogOutIcon className="icon" />
</a>
Expand Down
2 changes: 1 addition & 1 deletion csm_web/frontend/src/components/CourseMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import React, { useEffect, useState } from "react";
import { Link, Route, Routes } from "react-router-dom";

import { DEFAULT_LONG_LOCALE_OPTIONS, DEFAULT_TIMEZONE } from "../utils/datetime";
import { useUserInfo } from "../utils/queries/base";
import { useCourses } from "../utils/queries/courses";
import { useUserInfo } from "../utils/queries/profiles";
import { Course as CourseType, UserInfo } from "../utils/types";
import LoadingSpinner from "./LoadingSpinner";
import Course from "./course/Course";
Expand Down
Loading