'Determine which steps to display to the user.
Includes all steps by default, but removes steps
if the user has already completed them.
Arguments:
always_show_payment (bool): If True, display the payment steps
even if the user has already paid.
already_verified (bool): Whether the user has submitted
a verification request recently.
already_paid (bool): Whether the user is enrolled in a paid
course mode.
Returns:
list'

def _display_steps(self, always_show_payment, already_verified, already_paid, course_mode):

    display_steps = self.ALL_STEPS
    remove_steps = set()
    if (already_verified or (not CourseMode.is_verified_mode(course_mode))):
        remove_steps |= set(self.VERIFICATION_STEPS)
    if (already_paid and (not always_show_payment)):
        remove_steps |= set(self.PAYMENT_STEPS)
    else:
        remove_steps |= set([self.INTRO_STEP])
    return [{'name': step, 'title': unicode(self.STEP_TITLES[step])} for step in display_steps if (step not in remove_steps)]
