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))
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))