示例#1
0
def list_exams(request):
    d = get_ajaxinfo(request.GET)
    
    view_unpublished = False
    if request.user.has_perm('exam.add_exam'):
        view_unpublished = True
    d['view_unpublished'] = view_unpublished
    
    exam_filters = dict((k, v) for k, v in request.GET.items() if k.startswith("exam_") and len(v) > 0)    
    exams, descriptions = filter_exams(Exam.all.filter(complete=True) if view_unpublished else Exam.published.all(), exam_filters)
    d['filter_descriptions'] = descriptions

    if not descriptions:
        d.update(browse_popular_departments())
    elif exams.count() == 0:
        d['no_results'] = True
    else:
        related_ids = exams.values_list('course', 'department').distinct()
        course_ids = set(rid[0] for rid in related_ids)
        if len(course_ids) == 1:
            d.update(view_course(exams, course_ids.pop()))
        else:
            department_ids = set(rid[1] for rid in related_ids)
            if len(department_ids) == 1:
                d.update(browse_one_department(Department.objects.get(pk=department_ids.pop()), request.user.has_perm("exam.add_exam")))
                d['cache_key'] = d['department'].pk
            else:
                departments = Department.objects.filter(id__in=department_ids).order_by('name')
                d.update(browse_many_departments(departments))
                d['cache_key'] = ",".join(str(dept.pk) for dept in d['departments'])
    for k in _EXAM_FILTER_FUNCTIONS.keys():
        d[k] = exam_filters.get(k, '')
    return render_ajaxlist_response(request.is_ajax(), "exam/list_exams.html", d, context_instance=RequestContext(request))
示例#2
0
def list_incomplete(request):
    d = get_ajaxinfo(request.GET)
    if d['sort_by'] == '?':
        d['sort_by'] = 'submitted'

    incompletes = Exam.incomplete.all()
    incompletes = sort_objects(incompletes, d['sort_by'], None)
    incompletes = paginate_objects(incompletes, d, page=d['page'])

    d['incompletes'] = incompletes
    
    return render_ajaxlist_response(request.is_ajax(), "exam/list_incomplete.html", d, context_instance=RequestContext(request))