Skip to content
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

Merged
merged 56 commits into from
Oct 24, 2023

Conversation

KamilPawel
Copy link
Contributor

@KamilPawel KamilPawel commented Oct 2, 2023

This change is Reviewable

Copy link
Contributor

@cewei8483 cewei8483 left a 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

Copy link
Contributor

@cewei8483 cewei8483 left a 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

Copy link
Contributor Author

@KamilPawel KamilPawel left a 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.

Copy link
Contributor

@cewei8483 cewei8483 left a 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

Copy link
Contributor

@cewei8483 cewei8483 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image.png

Reviewable status: 0 of 25 files reviewed, 6 unresolved discussions (waiting on @KamilPawel)

Copy link
Contributor

@faucomte97 faucomte97 left a 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?

Copy link
Contributor

@faucomte97 faucomte97 left a 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

@SKairinos SKairinos requested a review from faucomte97 October 24, 2023 10:49
Copy link
Contributor

@SKairinos SKairinos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm:

Reviewable status: 51 of 52 files reviewed, 22 unresolved discussions (waiting on @faucomte97 and @KamilPawel)

Copy link
Contributor

@SKairinos SKairinos left a 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

Copy link
Contributor

@SKairinos SKairinos left a 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

Copy link
Contributor

@faucomte97 faucomte97 left a 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: :shipit: complete! all files reviewed, all discussions resolved (waiting on @KamilPawel)

Copy link
Contributor

@faucomte97 faucomte97 left a 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: :shipit: complete! all files reviewed, all discussions resolved (waiting on @KamilPawel)

@faucomte97 faucomte97 merged commit 1435e1f into development Oct 24, 2023
1 of 2 checks passed
@faucomte97 faucomte97 deleted the 158-teacher-teach-edit-student-details branch October 24, 2023 14:35
faucomte97 pushed a commit to faucomte97/codeforlife-portal-backend that referenced this pull request Dec 17, 2024
# 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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants