This seems like it's doing too much work.  If we're given a step, we need to find only the date range specific to that step.  Maybe something like this?
```
open_range  = (start, due)
assessment_steps = self.assessment_steps
if step == 'submission':
    open_range = date_ranges[0]
elif step in assessment_steps:
   step_index = assessment_steps.index(step)
   open_range = date_ranges[1 + step_index]
```
(replaces all lines 435-444)