CSC/ECE 517 Fall 2025 - E2566. Finish DueDates

From Expertiza_Wiki
Jump to navigation Jump to search

Introduction

Background

- This project aims to complete the implementation of the DueDate system in Expertiza. The current implementation consists mostly of class methods and lacks proper definition of different deadline types and permission checking functionality. This redesign will create a more robust, readable, and maintainable due date system.

Existing Components

- DueDate model with polymorphic parent association (Assignment/SignUpTopic)

- AssignmentDueDate and TopicDueDate subclasses

- Basic CRUD operations and sorting functionality

- Database schema with deadline_type_id field

Motivation

- Currently, there are some glaring issues with how due_dates was created in the first place. From the same table in the database and having old/redundant way of doing actions.

  1. No DeadlineType model to define different kinds of deadlines
  2. Overuse of class methods making the code difficult to maintain
  3. Missing permission checking logic for user actions
  4. Incomplete deadline type definitions
  5. Duplicate team_formation entries in deadline_types table
  6. No clear separation of concerns

Tasks Identified

ng the code difficult to maintain

  1. Missing permission checking logic for user actions
  2. Incomplete deadline type definitions
  3. Duplicate team_formation entries in deadline_types table
  4. No clear separation of concerns

Proposed Solution

1. DeadlineType Model Implementation

Create a new DeadlineType model to properly define and manage different types of deadlines.

Database Schema

CREATE TABLE deadline_types (
  id INT PRIMARY KEY,
  name VARCHAR(255) NOT NULL UNIQUE,
  description TEXT,
  created_at TIMESTAMP,
  updated_at TIMESTAMP
);

Deadline Type Definitions

  • 1: submission - Student work submission deadlines
  • 2: review - Peer review deadlines
  • 3: teammate_review - Team member evaluation deadlines (NEW)
  • 5: metareview - Meta-review deadlines (kept for backwards compatibility)
  • 6: drop_topic - Topic drop deadlines
  • 7: signup - Course/assignment signup deadlines
  • 8: team_formation - Team formation deadlines (clean up duplicate ID 10)
  • 11: quiz - Quiz completion deadlines

2. DueDate Model Refactoring

Current Problems

  • Too many class methods
  • Limited instance-level functionality
  • No permission checking capabilities
  • Poor separation of concerns

Demo

Demo Video

Demo Link

Future Work