While updating `is_available` to take `is_draft` into account is a good idea, it doesn't help here because you can't look that up in a queryset, so I'll still have to manually fix this up.

The logic for not allowing access to draft tasks should include the start date, but maybe not the end date (perhaps make it a class-level variable like `allow_expired_tasks` for the mixin, that way views that create TaskAttempts can have that set to False so they don't create attempts on expired tasks, but the task details page itself can allow it (unless the Task detail view isn't using the mixin, at which point it's not worth bothering customizing the mixin).