Returns the list of open assignments from the
            viewpoint of this user.

def open_assignments(self):
        '''
            Returns the list of open assignments from the
            viewpoint of this user.
        '''
        # Include only assignments with future, or no, hard deadline
        qs = Assignment.objects.filter(hard_deadline__gt=timezone.now(
        )) | Assignment.objects.filter(hard_deadline__isnull=True)
        # Include only assignments that are already published,
        # as long as you are not a tutor / course owner
        if not self.can_see_future():
            qs = qs.filter(publish_at__lt=timezone.now())
        # Include only assignments from courses that you are registered for
        qs = qs.filter(course__in=self.user_courses())
        # Ordering of resulting list
        qs = qs.order_by('soft_deadline', '-gradingScheme', 'title')
        waiting_for_action = [subm.assignment for subm in self.user.authored.all(
        ).exclude(state=Submission.WITHDRAWN)]
        # Emulate is_null sorting for soft_deadline
        qs_without_soft_deadline = qs.filter(soft_deadline__isnull=True)
        qs_with_soft_deadline = qs.filter(soft_deadline__isnull=False)
        ass_list = [
            ass for ass in qs_without_soft_deadline if ass not in waiting_for_action]
        ass_list += [
            ass for ass in qs_with_soft_deadline if ass not in waiting_for_action]
        return ass_list