Skip to content
Some3141 edited this page Jan 15, 2015 · 7 revisions

Each model is described by its mutable fields. In addition, non-integer keys are described as "key"

User

Assignment

  • key: Unique string; used by the client for submission (e.g., "cal/cs61A/fa14/proj1")
  • display_name: The name that will be displayed to users
  • points: The number of points that this assignment is worth.
  • templates: The file templates distributed for this assignment.
  • creator: a User.id
  • course: A Course.Name that maps this assignment to a Course in the Courses table.
  • max_group_size: the maximum size of a group for this assignment
  • due_date: The due date that will be displayed on the OK frontend and shown to students.
  • lock_date: The due that after which it will be impossible to do anything for this assignment unless you are an admin for the course.
  • services_requested: The services that this assignment wants (e.g. composition grading, autograding)

Course

  • key: Unique string (e.g., "cal/cs61A/fa14")
  • display_name: The name that will be displayed to users
  • institution: A string that represents the institution that this course is a part of.
  • offering: String that describes the offering of the course (e.g. “Spring 2015”)
  • instructors: The creator/owners of this course
  • active: whether the course is currently active (only instructors can deactivate a course)

Enrollment

  • course: Course.name
  • user: User.id
  • role: string in {instructor, staff, student}
  • identifier: string (e.g., login)

Backup

Raw data dump received from an authenticated client.

  • submitter: A User.id
  • assignment: An Assignment.name
  • sent: Client timestamp
  • received: Server timestamp
  • messages: the raw messages from the client
  • tags: Any tags that this Backup has

Submissions

Any backup sent with the --submit flag.

  • key: Backup.id (TODO Cache scores here?)

FinalSubmission

(At most one final submission for each group and one for each student without a group)

  • id: The Backup.id for the submission that will be graded
  • assignment: The assignment that this is a final submission for
  • group: The group that this submission is for (optional)
  • users: People submitting (everyone in the group or just a single person) (TODO Cache/store grading status here?)

Diff

  • before: Backup.id (or None to compare to template)
  • after: Backup.id
  • diff: The computed diff

Score

  • points: the number of points earned (A floating point number)
  • feedback: A string representing the feedback for this score.
  • created: When the score was assigned
  • grader: Who assigned the score.
  • submission: A SubmissionKey for the submission that this score belongs to.

Comment

  • author: A UserKey that corresponds to the author of the comment
  • created: When the comment was made
  • submission: Backup.id
  • filename: Which file this comment corresponds to
  • line: The line number for the comment
  • message: The message for the comment

Group

  • assignment: The assignment that this group is for
  • active: Users in a particular order (Partner 1, Partner 2, etc).
  • pending: Users who have received an invitation

Notification

Represents a Notification that needs to be sent out

  • url: The URL that this notification will take the user to once clicked
  • users: The users who have not yet received this notification. Once the length of this list is 0, then this notification is deleted.
  • message: The message to display

Message

Represents a message given to us from the ok client. It is a dictionary of key-value pairs.

  • contents: the value of each message
  • kind: the key of each message

Version

A version of the client side resources for auto-updating.

  • name: The name of the client (e.g. 'ok', 'git')
  • versions: All past versions that have been used
  • current_version: the current version in use for this course
  • base_url: the base_url where this resource lies
  • course: the course that this version is for.

AuditLog

A log for all group addition/deletions in case of cheating.

  • created: When this event happened
  • event_type: The type of event that happened
  • user: The person whose credentials the event happened under
  • description: A description of the event
  • obj: The object that was changed by the event.

Queue

A Queue for a staff to do composition scoring.

  • assignment: The Assignment that the queue is for
  • assigned_staff: The staff member that is assigned to this queue

Analytics

Describes a job that has not finished running yet.

  • job_type: The type of job that will be run. These will be defined in an extensible analytics framework.
  • assignments: list of assignments that this job is run on.
  • active: A computed boolean that will be "false" when this job is done running.
  • state: A dictionary of state variables that this job can use
  • next_run: The time of the next run of this job

AnalyticsResult

The result of an Analytics job. It is up to the Analytics Job to use this interface.

  • state: A dictionary of state variables that is the result of a job.
  • Course: the course that this is for
  • AssignmentID: The assignment that this is for
  • job_type: The type of job that this is the result of