PrairieLearn / PrairieLearn

Online problem-driving learning system
http://prairielearn.readthedocs.io/
Other
342 stars 317 forks source link

Stop enrollments after a certain date #2376

Open coatless opened 4 years ago

coatless commented 4 years ago

Add a key to infoCourseInstance.json that could inhibit joining a course after a specific time.

stopEnrollmentDate: "2020-02-2020"

This allows for some level setup.

trombonekenny commented 4 years ago

allowAccess rules in the courseInstance already define this? Or am I missing something?

coatless commented 4 years ago

@trombonekenny I typed this up during OH. Apologies for the briefness.

I think the issue with allowAccess is it would prevent students completing assignments during the semester if endDate was predefined.

The stopEnrollmentDate concept would be paired with the API Mass Add/Remove to try to mimic a traditional rostering approach.

trombonekenny commented 4 years ago

Thanks, that clarification makes sense.

For implementation, I'd like to see an actions flag, or something, added to access control rules to add this new level of filtering. (Allow or deny certain actions, probably default to all of them unless defined.)

{
    "start_date": "2020-01-20 00:00:00",
    "end_date": "2020-02-03 23:59:59",
},
{
   "start_date": "2020-01-20 00:00:00",
   "end_date": "2020-05-31 23:59:59",
   "actions_denied": ["enroll"]
}

With the right combo of actions and permission matching, that could be pretty powerful - both at the courseInstance and assessment level. (Actions like "create", "save", "grade", "view"?)

That would be a pretty significant access control change, but it would cleanup some of the newer features ("hide exam after taken", "don't allow immediate grading", etc.) and do it at the allowAccess rule level which means you could user or date scope it.