-
Notifications
You must be signed in to change notification settings - Fork 0
Gradebook Task List
Team members shall place their name next to a task item that they are claiming. Members should only claim items that can reasonable expect to do within an appropriate time frame. Once an item is completed, a corresponding change should be pushed to the repo. Once several related changes are completed, a pull request should be opened to merge the changed into the default branch. Once that is merged, the checkbox next to the task item should be filled in.
Add group roles to Gradebook For development purposes, role names will have an alpha_ prefix. This prefix should be removed before release. These roles should be assigned to users when they are created (for example, inside the function addStudent().
- alpha_GB_Student - Middleton
- alpha_GB_Instructor - Middleton
- alpha_GB_Registrar - Middleton
- alpha_GB_RegistrarAdmin - Middleton
- alpha_GB_Admissions - Middleton
- alpha_GB_DBAdmin - Middleton
Update Access Controls on Tables - Finished (see branch add-table-restrictionsand PR #10)
Access for each table should be only through functions, though GB_DBAdmin and superusers can directly access and modify the tables. Ultimately, the tables would be owned by the gradebook role, though for development they will likely be set to be owned by the alpha role.
- Course - Figueroa
- Season - Figueroa
- Term - Figueroa
- SignificantDate - Figueroa
- Instructor - Figueroa
- Section - Figueroa
- Grade - Figueroa
- Section_GradeTier - Figueroa
- Student - Figueroa
- Major - Figueroa
- Student_Major - Figueroa
- Enrollee - Figueroa
- AttendanceStatus - Figueroa
- AttendanceRecord - Figueroa
- Section_AssessmentComponent - Figueroa
- Section_AssessmentItem - Figueroa
- Enrollee_AssessmentItem - Figueroa
Update Access Controls on Existing DB Functions
addAttendanceMgmt.sql:
- getScheduleDates(startDate DATE, endDate DATE, schedule VARCHAR(7)) Anyone - DaSilva
- getAttendance(sectionID INT) GB_Instructor, GB_Registrar, GB_DBAdmin - DaSilva
- getAttendance(year NUMERIC(4,0), seasonIdentification VARCHAR(20), course VARCHAR(8), sectionNumber VARCHAR(3) GB_Instructor, GB_Registrar, GB_DBAdmin - DaSilva
addInstructorMgmt.sql: All Gradebook users except for Students (they can access similar information through section information)
- getInstructors() - DaSilva
- getInstructor(Email Gradebook.Instructor.Email%TYPE) - DaSilva
- getInstructor(instructorID INT) - DaSilva
- getInstructorYears(instructorID INT) - DaSilva
- getInstructorSeasons(instructorID INT, year NUMERIC(4,0)) - DaSilva
- getInstructorCourses(instructorID INT, year NUMERIC(4,0), seasonOrder NUMERIC(1,0)) - DaSilva
- getInstructorSections(instructorID INT, year NUMERIC(4,0), seasonOrder NUMERIC(1,0)) - DaSilva
- getInstructorSections(instructorID INT, instructorID INT, year NUMERIC(4,0), seasonOrder NUMERIC(1,0), courseNumber VARCHAR(8)) - DaSilva
addSeasonMgmt.sql: Anyone
- getSeason(seasonIdentification VARCHAR(20)) - Middleton
- getSeason(seasonOrder NUMERIC(1,0)) - Middleton
- getSeasonOrder(seasonIdentification VARCHAR(20)) - Middleton
addSectionMgmt.sql: Anyone
- getSectionID(year NUMERIC(4,0), seasonIdentification VARCHAR(20), course VARCHAR(8), sectionNumber VARCHAR(3)) - Middleton
- getSectionID(year NUMERIC(4,0), seasonOrder NUMERIC(1,0), course VARCHAR(8), sectionNumber VARCHAR(3)) - Middleton
- getSection(year NUMERIC(4,0), seasonIdentification VARCHAR(20), course VARCHAR(8), sectionNumber VARCHAR(3)) - Middleton
- getSection(year NUMERIC(4,0), seasonOrder NUMERIC(1,0), course VARCHAR(8), sectionNumber VARCHAR(3)) - Middleton
Implement DB Functions (with unit tests where appropriate)
- getStudentYears(studentID) - Figueroa
- getYearsAsStudent() - Figueroa
- getStudentSeasons(studentID, year) - Figueroa
- getSeasonsAsStudent(year) - Figueroa
- listSeasons() - Figueroa
- addSignificantDate(term, date, name, closureStatus, reason) - Figueroa
- getTermID(year, season) - DaSilva
- getTermStart(termID) - DaSilva
- getTermEnd(termID) - DaSilva
- getSignificantDates(termID) - DaSilva
- getTermCourseCount(termID) - DaSilva
- getTermSectionCount(termID) - DaSilva
- getTermInstructorCount(termID) - DaSilva
- getTermStudentCount(termID) - DaSilva
- getTermSections(termID) - DaSilva
- getTermSectionsReport(termID) - DaSilva
- addCourse(name, defaultTitle) - DaSilva
- changeCourseDefaultTitle(courseName) - DaSilva
- searchCourseTitle(title) - DaSilva
- searchSectionTitles(termID, title) - Middleton
- getCourseDefaultTitle(courseNumber) - Middleton
- updateCourseName(number, title) - Middleton
- showCoursesByYear(year) - Middleton
- showCoursesByTerm(term) - Middleton
- addStudent(fName, mName, lName, schoolIssuedID, email, year) - Figueroa
- assignMajor(student, major) - Figueroa
- revokeMajor(student, major) - Figueroa
- searchStudent(fname, mName, lName) - Middleton
-
getStudentID(schoolIssuedID)duplicate - getMyStudentID() - Middleton
- getStudentIDbyIssuedID(ID) - Middleton
- getStudentIDbyEmail(email) - Middleton
- getStudent(schoolIssuedID) - Middleton
- assignMidtermGrade(student, midtermGradeAwarded) - Middleton
- assignFinalGrade(student, midtermGradeAwarded) - Middleton
- getSectionID(term, courseNumber, sectionNumber) - Middleton
- getSectionID(term, CRN) - Middleton
- getSection(sectionID) - Middleton
- getInstructorName(instructorID) - Middleton
- getSignificantDates(termID) - Figueroa
Necessary constraints not currently in schema - May need to implement in a later milestone due to time constraints
- Major.Name should be unique case-insensitively
- Any uniqueness check on
SchoolIssuedIDshould be case-insensitive -
SchoolIssuedIDshould be unique among Student and Instructors -
SchoolIssuedIDshould not contain characters that are not allowed in SQL identifiers
- Script to drop all functions
Requirements that need Middleware
- 5.1 (Read)
- Expand existing /years endpoint to also return student years when called by a student, and all institutional years when no student/instructor id is provided. (Requires corresponding change to UI that can be assumed to have been made/manually provided during testing)
- 5.2 (Read)
- Expand existing /seasons endpoint to also return student season when called by a student, and all institutional seasons for the given year when no student/instructor id is provided. (Requires corresponding change to UI that can be assumed to have been made/manually provided during testing)
- 11.6 (Read)
- 11.7.1 (Read)
- Add new /sectionreport endpoint that returns a filtered list of sections. Sections may be filtered in several manners: “mysections” (final name pending) returns sections that the user instructs/is enrolled in. Reports can also be filtered by term. In any case, the total number of sections retrieved may be optionally limited to reduce server/client load; an offset may be given to retrieve the next set of results.
- 11.7.2 (Read)
- Add new /sectionschedule end point that returns an array of days that that the course will be held given a section id.
- 15 (Write)
- Add new endpoint that takes in a .csv file containing a section roster to batch import student enrollment information and registers students for the section indicated in the call.
Requirements that need UI
At this point, tasks are being left in a general manner to allow for flexibility in how the design and implementation approach will proceed. More details to these tasks may be added during the two preceding milestones.
- 5.1 (Read)
- Design
- Implementation
- 5.1.3 (Read)
- Design
- Implementation
- 5.2 (Read)
- Design
- Implementation
- 5.2.4 (Read)
- Design
- Implementation
- 11.6 (Read)
- Design
- Implementation
- 11.7.1 (Read)
- Design
- Implementation
- 11.7.2 (Read)
- Design
- Implementation
- 15 (Write)
- Design
- Implementation