-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: 158 teacher teach edit student details #185
feat: 158 teacher teach edit student details #185
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please fix all the eslint errors (I didn't mark them all)
Reviewable status: 0 of 20 files reviewed, 16 unresolved discussions (waiting on @KamilPawel)
backend/portal/views/teacher/dashboard.py
line 95 at r1 (raw file):
from django.core.exceptions import ObjectDoesNotExist
move import to top
backend/portal/views/teacher/teach.py
line 616 at r1 (raw file):
"onboarding_done": True, "query_data": students_info, # this field could be redundant # "class_url": request.build_absolute_uri(
delete if not used
backend/portal/views/teacher/teach.py
line 977 at r1 (raw file):
# @csrf_exempt # def teacher_print_reminder_cards(request, access_code):
delete these comments if not used and not going to be referred
backend/portal/views/teacher/teach.py
line 1088 at r1 (raw file):
@csrf_exempt
remove this (and its import)
frontend/src/components/form/StudentNameField.tsx
line 15 at r1 (raw file):
helperText = 'Choose a name', disabled = false, style,
eslint
frontend/src/features/newStudentsTable/NewStudentsTable.tsx
line 96 at r1 (raw file):
} }; const buttonStyles = isButtonBanner ? {
eslint
frontend/src/features/newStudentsTable/NewStudentsTable.tsx
line 230 at r1 (raw file):
<Typography marginRight={2}>Class link:</Typography> <Typography className="nowrap-ellipsis"> {classLink} {'lol'}
lol
frontend/src/pages/login/MyDocument.tsx
line 5 at r1 (raw file):
import CflLogo from '../../images/cfl_logo.png';
eslint
frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx
line 85 at r1 (raw file):
}; const { data, error, isLoading } = useGetStudentsByAccessCodeQuery({ accessCode });
should be disappeared after merging dev
frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx
line 204 at r1 (raw file):
); };
eslint
frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx
line 84 at r1 (raw file):
const initialValues: Values = { password: '', confirmPassword: '',
eslint
frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx
line 92 at r1 (raw file):
password: values.password, studentId, confirmPassword: values.confirmPassword,
eslint
frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx
line 141 at r1 (raw file):
marginBottom={theme.spacing(11.5)} > Edit student details for Florian from class Class 1 ({accessCode})
replace Florian with student name
frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx
line 4 at r1 (raw file):
import ClassCredentials from '../../../../../teacherOnboarding/ClassCredentials'; import Page from 'codeforlife/lib/esm/components/page'; import { Print } from '@mui/icons-material';
eslint
frontend/src/pages/teacherOnboarding/ClassCredentials.tsx
line 42 at r1 (raw file):
path = paths.teacher.dashboard.classes._; buttonText = 'Back to class'; }
Use consts to make them conciser, e.g. const startIcon = studentData ? <ChevronLeftOutlined /> : <></>;
frontend/src/pages/teacherOnboarding/ClassCredentials.tsx
line 44 at r1 (raw file):
} // TODO: get from API.
remove this line if the data is already from API
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewable status: 0 of 20 files reviewed, 17 unresolved discussions (waiting on @KamilPawel)
frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx
line 16 at r2 (raw file):
header={`${className}, (${accessCode})`} textAlign='center' subheader='Class and class access code:' />
swap the header & subheader
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewable status: 0 of 25 files reviewed, 17 unresolved discussions (waiting on @cewei8483)
backend/portal/views/teacher/dashboard.py
line 95 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
move import to top
Done.
backend/portal/views/teacher/teach.py
line 616 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
delete if not used
Done.
backend/portal/views/teacher/teach.py
line 977 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
delete these comments if not used and not going to be referred
this may be needed similar to csv, added TODO as well, where it has the analytic
backend/portal/views/teacher/teach.py
line 1088 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
remove this (and its import)
Done.
frontend/src/features/newStudentsTable/NewStudentsTable.tsx
line 96 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
eslint
Done.
frontend/src/features/newStudentsTable/NewStudentsTable.tsx
line 230 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
lol
Done.
frontend/src/pages/login/MyDocument.tsx
line 5 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
eslint
?
frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx
line 84 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
eslint
Done.
frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx
line 92 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
eslint
Done.
frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx
line 141 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
replace Florian with student name
Done.
frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx
line 4 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
eslint
Done.
frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx
line 16 at r2 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
swap the header & subheader
Done.
frontend/src/pages/teacherOnboarding/ClassCredentials.tsx
line 42 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
Use consts to make them conciser, e.g.
const startIcon = studentData ? <ChevronLeftOutlined /> : <></>;
Done.
frontend/src/pages/teacherOnboarding/ClassCredentials.tsx
line 44 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
remove this line if the data is already from API
Done.
frontend/src/components/form/StudentNameField.tsx
line 15 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
eslint
Done.
frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx
line 85 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
should be disappeared after merging dev
Done.
frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx
line 204 at r1 (raw file):
Previously, cewei8483 (Chi-En Wei) wrote…
eslint
Done.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewable status: 0 of 25 files reviewed, 6 unresolved discussions (waiting on @KamilPawel)
backend/portal/views/teacher/teach.py
line 586 at r6 (raw file):
domain = settings.SERVICE_DOMAIN login_url = ( f"{protocol}://{domain}/api/u/{student.new_user.id}/{uuidstr}/"
port
backend/portal/views/teacher/teach.py
line 1084 at r6 (raw file):
def teacher_print_reminder_cards(request, access_code):
add @login_required
backend/portal/views/teacher/teach.py
line 1141 at r6 (raw file):
def get_student_data(request):
comment this as well (it seems that it's only called by teacher_download_csv)
frontend/src/pages/privacyNotice/ForAdults/HowWeUseInfo.tsx
line 16 at r6 (raw file):
const CustomTableRow: React.FC<{ left: string, right: any;
remove the semicolon as it's not needed and not relevant to the task
frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx
line 252 at r6 (raw file):
const studentData = data?.studentsPerAccessCode;
eslint 😂
frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx
line 76 at r6 (raw file):
const [editStudentPassword] = useEditStudentPasswordMutation(); const location = useLocation(); console.log(location);
remove console.log
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewable status: 0 of 25 files reviewed, 6 unresolved discussions (waiting on @KamilPawel)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed 1 of 20 files at r1, 2 of 9 files at r2, 1 of 12 files at r3, 1 of 1 files at r9, 2 of 3 files at r10, 1 of 4 files at r12, 4 of 14 files at r13, 1 of 7 files at r14, 16 of 29 files at r15, all commit messages.
Reviewable status: 33 of 52 files reviewed, 14 unresolved discussions (waiting on @cewei8483 and @KamilPawel)
backend/Pipfile
line 31 at r15 (raw file):
google-cloud-container = "==2.3.0" "django-anymail[amazon_ses]" = "==7.0.*" codeforlife = {ref = "158-teacher-teach-edit-student-details", git = "https://github.com/ocadotechnology/codeforlife-package-python.git"}
Reminder of branch install
backend/portal/urls/teacher/dashboard.py
line 95 at r15 (raw file):
r"^class/student/(?P<student_id>[0-9]+)/$", get_student_details, name="get_student_details",
Please double check whether these two endpoints are needed in this file (they don't seem like teacher dashboard features to me)
Code quote:
re_path(
rf"^class/students/(?P<access_code>{ACCESS_CODE_REGEX})/$",
get_students_from_access_code,
name="get_students_from_acccess_code",
),
re_path(
r"^class/student/(?P<student_id>[0-9]+)/$",
get_student_details,
name="get_student_details",
backend/portal/views/school.py
line 7 at r15 (raw file):
class SchoolViewSet(_SchoolViewSet): http_method_names = ["get", "post", "patch", "delete"]
Users don't actually have the functionality to delete schools yet.
Schools as of now never get deleted unless we do so in the django admin.
backend/portal/views/teacher/dashboard.py
line 99 at r15 (raw file):
def get_student_details(request, student_id):
Just questioning again why this endpoint and the one above are here in the dashboard
file. Seems like class specific endpoints to me.
Now that I'm typing this I'm thinking this endpoint might be needed in the dashboard for the independent student join requests, but still not sure about the one above.
backend/portal/views/teacher/teach.py
line 535 at r15 (raw file):
if request.method == "POST": if "name" in request.POST:
Why replace the old check with this one?
backend/portal/views/teacher/teach.py
line 568 at r15 (raw file):
return JsonResponse( { "message": "Your details were not updated due to incorrect details"
I can't think of a case where this would happen? (basically do we need that piece of code?)
backend/portal/views/teacher/teach.py
line 939 at r15 (raw file):
# to fix the dictionary issue, feel free to use it and # delete this method def expand_key(dictionary):
Not sure what the issue in question here is, also not sure if it's worth being more specific.
backend/portal/views/teacher/teach.py
line 1113 at r15 (raw file):
# TODO: before deploying make sure the count_student_details_click is implemented
Not too sure what is going on in this file. Not yet able to tell which parts are implemented or not (I do have a lot of the review left)
frontend/src/app/api/klass.ts
line 111 at r15 (raw file):
}), invalidatesTags: (result, error, { accessCode }) => !error ? [{ type: 'school', id: accessCode }]
why type school? Should be class no?
frontend/src/app/api/school.ts
line 25 at r15 (raw file):
country: string; county: null | string; isActive?: boolean;
Not too sure why some of these are optional and others aren't. County could very well be optional imo.
I think there were similar inconsistencies in the Class model too.
Code quote:
county: null | string;
isActive?: boolean;
frontend/src/app/api/user.ts
line 27 at r15 (raw file):
lastName: string; email: string; password: null | string;
Didn't you say the password field should be writeOnly?
frontend/src/app/api/user.ts
line 124 at r15 (raw file):
: [] }), updateUser: build.mutation<
no BulkUpdateUsers?
frontend/src/app/api/user.ts
line 140 at r15 (raw file):
: [] }), destroyUser: build.mutation<
no BulkDestroyUsers?
frontend/src/app/api/teacher/dashboard.ts
line 116 at r15 (raw file):
invalidatesTags: ['teacher'] }), oldUpdateSchool: build.mutation<void, {
Can this be updated / removed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed 1 of 9 files at r2, 1 of 5 files at r4, 5 of 14 files at r13, 1 of 7 files at r14, 13 of 29 files at r15.
Reviewable status: all files reviewed, 22 unresolved discussions (waiting on @KamilPawel)
frontend/src/app/api/teacher/teach.ts
line 102 at r15 (raw file):
query: ({ studentId, password, confirmPassword }) => ({ url: `teach/student/edit/${studentId}`, method: 'POST',
Why is this POST and not PATCH? Same for the update class mutation above.
frontend/src/app/api/teacher/teach.ts
line 118 at r15 (raw file):
query: ({ studentId, name }) => ({ url: `teach/student/edit/${studentId}`, method: 'POST',
Same question here
frontend/src/app/api/teacher/teach.ts
line 132 at r15 (raw file):
query: ({ accessCode }) => ({ url: `teach/class/delete/${accessCode}`, method: 'POST',
why is this a POST and not a DELETE?
frontend/src/app/api/teacher/teach.ts
line 145 at r15 (raw file):
query: (body) => ({ url: 'teach/move_class/', method: 'POST',
Same here - shouldn't this be a PATCH? 😕
frontend/src/app/api/teacher/teach.ts
line 159 at r15 (raw file):
query: ({ accessCode, data }) => ({ url: `teach/onboarding-class/${accessCode}/print-reminder-cards/`, method: 'POST',
Post or get?
frontend/src/pages/teacherDashboard/YourSchool.tsx
line 201 at r15 (raw file):
const schoolPostcode = schoolData.postcode; const schoolCountry = schoolData.country; const [updateSchool] = useOldUpdateSchoolMutation();
Can we replace / remove this?
frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/StudentCredentials.tsx
line 66 at r15 (raw file):
header='Class and class access code:' /> <Page.Notification>
Does this notification have the right icon like we discussed?
frontend/src/pages/teacherOnboarding/TeacherOnboarding.tsx
line 103 at r15 (raw file):
<AddStudentsForm key={generateKey(2)} // classId={activeStep.classId as number}
please remove if not needed then
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewable status: 51 of 52 files reviewed, 22 unresolved discussions (waiting on @faucomte97 and @KamilPawel)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewable status: 51 of 52 files reviewed, 22 unresolved discussions (waiting on @faucomte97 and @KamilPawel)
frontend/src/app/api/klass.ts
line 111 at r15 (raw file):
Previously, faucomte97 (Florian Aucomte) wrote…
why type school? Should be class no?
done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewable status: 47 of 52 files reviewed, 22 unresolved discussions (waiting on @faucomte97 and @KamilPawel)
backend/portal/urls/teacher/dashboard.py
line 95 at r15 (raw file):
Previously, faucomte97 (Florian Aucomte) wrote…
Please double check whether these two endpoints are needed in this file (they don't seem like teacher dashboard features to me)
will address in another task
frontend/src/app/api/user.ts
line 124 at r15 (raw file):
Previously, faucomte97 (Florian Aucomte) wrote…
no BulkUpdateUsers?
done
frontend/src/app/api/user.ts
line 140 at r15 (raw file):
Previously, faucomte97 (Florian Aucomte) wrote…
no BulkDestroyUsers?
done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed 1 of 3 files at r8, 1 of 1 files at r16, 3 of 4 files at r17, 9 of 9 files at r18, all commit messages.
Reviewable status: complete! all files reviewed, all discussions resolved (waiting on @KamilPawel)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed 1 of 12 files at r3.
Reviewable status: complete! all files reviewed, all discussions resolved (waiting on @KamilPawel)
# 1.0.0 (2024-12-06) ### Bug Fixes * 105 new portal edits loginteacher ([ocadotechnology#113](ocadotechnology#113)) ([80339ed](ocadotechnology@80339ed)) * 2044 register page ([ocadotechnology#26](ocadotechnology#26)) ([78477e2](ocadotechnology@78477e2)) * 2045 home page ([ocadotechnology#6](ocadotechnology#6)) ([681e86e](ocadotechnology@681e86e)) * 2054 home learning page ([ocadotechnology#8](ocadotechnology#8)) ([5cbb7d5](ocadotechnology@5cbb7d5)) * 2059 http error pages ([ocadotechnology#9](ocadotechnology#9)) ([006f31f](ocadotechnology@006f31f)) * 91 new portal edits student ([ocadotechnology#120](ocadotechnology#120)) ([3d2bab5](ocadotechnology@3d2bab5)) * 93 new portal edits teacherdashboardaccount ([ocadotechnology#123](ocadotechnology#123)) ([e27cea2](ocadotechnology@e27cea2)) * 99 new portal edit teacherdashboardclassesab123movestudentids=1 ([ocadotechnology#128](ocadotechnology#128)) ([6467467](ocadotechnology@6467467)) * about us page ([ocadotechnology#3](ocadotechnology#3)) ([4215826](ocadotechnology@4215826)) * add new logic ([ocadotechnology#79](ocadotechnology#79)) ([20ef876](ocadotechnology@20ef876)) * add NewsLetter page ([ocadotechnology#10](ocadotechnology#10)) ([656de69](ocadotechnology@656de69)) * add self as a media source ([ocadotechnology#121](ocadotechnology#121)) ([be6f39a](ocadotechnology@be6f39a)) * added padding teacher backup token ([ocadotechnology#141](ocadotechnology#141)) ([d589833](ocadotechnology@d589833)) * added spacings and the copy to clipboard functionality ([ocadotechnology#127](ocadotechnology#127)) ([d95ca66](ocadotechnology@d95ca66)) * altered the padding to match prod ([ocadotechnology#138](ocadotechnology#138)) ([931c681](ocadotechnology@931c681)) * changed the header from 'Welcome' to 'Log in as a teacher' ([ocadotechnology#149](ocadotechnology#149)) ([6c4947f](ocadotechnology@6c4947f)) * CodingClub page ([ocadotechnology#5](ocadotechnology#5)) ([ba8f2d6](ocadotechnology@ba8f2d6)) * error pages ([22f0802](ocadotechnology@22f0802)) * fix padding ([ocadotechnology#129](ocadotechnology#129)) ([0a973e8](ocadotechnology@0a973e8)), closes [#1](https://github.com/ocadotechnology/codeforlife-portal-backend/issues/1) * footer ([669e592](ocadotechnology@669e592)) * footer feedback ([fd618e2](ocadotechnology@fd618e2)) * general navigation ([01b7638](ocadotechnology@01b7638)) * get involved feedback ([1fb6d37](ocadotechnology@1fb6d37)) * get involved page ([ocadotechnology#4](ocadotechnology#4)) ([2a6a109](ocadotechnology@2a6a109)) * header ([bfdb306](ocadotechnology@bfdb306)) * home learning page feedback ([51295b8](ocadotechnology@51295b8)) * images contribute feedback ([55dfc63](ocadotechnology@55dfc63)) * install cfl package dev extra ([ocadotechnology#298](ocadotechnology#298)) ([552fbfe](ocadotechnology@552fbfe)) * new About us page edits ([ocadotechnology#104](ocadotechnology#104)) ([8226f01](ocadotechnology@8226f01)) * new portal edits - /student/dashboard/independent/join ([ocadotechnology#114](ocadotechnology#114)) ([1a47514](ocadotechnology@1a47514)) * new portal edits - /teacher/dashboard/account/setup-2fa ([ocadotechnology#119](ocadotechnology#119)) ([7c59b88](ocadotechnology@7c59b88)) * New portal edits - Header ([ocadotechnology#102](ocadotechnology#102)) ([0476c1a](ocadotechnology@0476c1a)) * new portal edits - table greys ([ocadotechnology#80](ocadotechnology#80)) ([845cba1](ocadotechnology@845cba1)) * New portal edits - teacher/2FA ([ocadotechnology#139](ocadotechnology#139)) ([beb2ac6](ocadotechnology@beb2ac6)) * padding and default ticked levels ([ocadotechnology#126](ocadotechnology#126)) ([0d7c5f9](ocadotechnology@0d7c5f9)), closes [ocadotechnology#2](ocadotechnology#2) * pipeline tests ([9b8de6a](ocadotechnology@9b8de6a)) * spacing ([ocadotechnology#75](ocadotechnology#75)) ([4facbd8](ocadotechnology@4facbd8)) * themedbox and close menu on details button click ([078e968](ocadotechnology@078e968)) * tsconfig ([0afbb17](ocadotechnology@0afbb17)) * update cfl js package version ([ocadotechnology#148](ocadotechnology#148)) ([9664ec4](ocadotechnology@9664ec4)) * update password ([ocadotechnology#314](ocadotechnology#314)) ([52268fc](ocadotechnology@52268fc)) * Update URLs in cron jobs ([ocadotechnology#168](ocadotechnology#168)) ([7519ee0](ocadotechnology@7519ee0)) * use recursive path generator and normalize path attributes ([de837e8](ocadotechnology@de837e8)) * use recursive path generator and normalize path attributes ([ocadotechnology#38](ocadotechnology#38)) ([3137425](ocadotechnology@3137425)) * y overflow ([ce6fe5d](ocadotechnology@ce6fe5d)) ### Features * 158 teacher teach edit student details ([ocadotechnology#185](ocadotechnology#185)) ([1435e1f](ocadotechnology@1435e1f)), closes [#1](https://github.com/ocadotechnology/codeforlife-portal-backend/issues/1) [ocadotechnology#2](ocadotechnology#2) [ocadotechnology#2](ocadotechnology#2) [ocadotechnology#2](ocadotechnology#2) [ocadotechnology#3](ocadotechnology#3) [ocadotechnology#3](ocadotechnology#3) [ocadotechnology#4](ocadotechnology#4) [ocadotechnology#5](ocadotechnology#5) [ocadotechnology#5](ocadotechnology#5) * 16 organisation views ([ocadotechnology#147](ocadotechnology#147)) ([2d8219f](ocadotechnology@2d8219f)) * 17 email views ([ocadotechnology#76](ocadotechnology#76)) ([15986b8](ocadotechnology@15986b8)) * 19 api views ([ocadotechnology#118](ocadotechnology#118)) ([7271f19](ocadotechnology@7271f19)) * 2039 teachers page ([ocadotechnology#32](ocadotechnology#32)) ([b2794e7](ocadotechnology@b2794e7)) * 2042 studnents page ([ocadotechnology#7](ocadotechnology#7)) ([a6fcab7](ocadotechnology@a6fcab7)) * 2055 privacy notice page ([ocadotechnology#34](ocadotechnology#34)) ([855fc66](ocadotechnology@855fc66)) * 2056 terms of use page ([ocadotechnology#31](ocadotechnology#31)) ([7fdc868](ocadotechnology@7fdc868)) * 2058 students + independents auth pages ([ocadotechnology#30](ocadotechnology#30)) ([20b6157](ocadotechnology@20b6157)) * 35 teachers onboarding ([ocadotechnology#36](ocadotechnology#36)) ([3f9213b](ocadotechnology@3f9213b)) * adapted home.py to work with our current frontend ([ocadotechnology#77](ocadotechnology#77)) ([628aebb](ocadotechnology@628aebb)) * added 3 tabs on teachers dashboard page ([ocadotechnology#29](ocadotechnology#29)) ([ad04ead](ocadotechnology@ad04ead)) * adding get-students-endpoint ([ocadotechnology#184](ocadotechnology#184)) ([f842ad7](ocadotechnology@f842ad7)), closes [#1](https://github.com/ocadotechnology/codeforlife-portal-backend/issues/1) [ocadotechnology#2](ocadotechnology#2) * Bundle front end and add Django backend ([ocadotechnology#27](ocadotechnology#27)) ([48b1c95](ocadotechnology@48b1c95)) * cypress plus codecov ([ocadotechnology#2](ocadotechnology#2)) ([91dc301](ocadotechnology@91dc301)) * dotmailer views ([ocadotechnology#69](ocadotechnology#69)) ([24692fd](ocadotechnology@24692fd)) * integrated the score view for the students and student login ([ocadotechnology#150](ocadotechnology#150)) ([2bf397a](ocadotechnology@2bf397a)), closes [#1](https://github.com/ocadotechnology/codeforlife-portal-backend/issues/1) * login page ([ocadotechnology#28](ocadotechnology#28)) ([638179a](ocadotechnology@638179a)) * otp deploy ([ocadotechnology#370](ocadotechnology#370)) ([46e68b3](ocadotechnology@46e68b3)) * page agnostic features ([ocadotechnology#37](ocadotechnology#37)) ([8eb3c9a](ocadotechnology@8eb3c9a)) * teacher student management ([ocadotechnology#42](ocadotechnology#42)) ([5521a95](ocadotechnology@5521a95)) * teacher teach delete class ([ocadotechnology#183](ocadotechnology#183)) ([f7f9ef9](ocadotechnology@f7f9ef9)) * teacher teach delete student ([ocadotechnology#186](ocadotechnology#186)) ([a71c881](ocadotechnology@a71c881)) * teacher views classes dashboard ([ocadotechnology#180](ocadotechnology#180)) ([985bcc1](ocadotechnology@985bcc1)) * teacher views dashboard ([ocadotechnology#173](ocadotechnology#173)) ([df0dbcb](ocadotechnology@df0dbcb)) * update details, delete account, disable 2fa ([ocadotechnology#179](ocadotechnology#179)) ([a4a8e59](ocadotechnology@a4a8e59)), closes [#1](https://github.com/ocadotechnology/codeforlife-portal-backend/issues/1) [ocadotechnology#2](ocadotechnology#2) [ocadotechnology#3](ocadotechnology#3) [ocadotechnology#3](ocadotechnology#3) [ocadotechnology#4](ocadotechnology#4)
This change is