def overview(request, department, number): try: course = get_object_or_404(Course, department=department.upper(), number=int(number)) except Http404: return render(request, "courses/404.html", {'department': department.upper(), 'number': number}) # We can't use it directly in the template file, it just won't work types = [] for name, obj in page_types.iteritems(): # Get all the pages associated with this page type (and this course etc) pages = Page.objects.filter(page_type=name, course_sem__course=course) types.append({'name': name, 'url': obj.get_create_url(course), 'icon': obj.get_icon(), 'long_name': obj.long_name, 'desc': obj.description, 'list_header': obj.get_list_header(), 'list_body': obj.get_list_body(), 'pages': pages}) try: this_sem = CourseSemester.objects.get(course=course, term='winter', year='2011') this_sem_pages = this_sem.page_set.all() except CourseSemester.DoesNotExist: this_sem_pages = [] # Get all the course semesters related to this course course_sems = CourseSemester.objects.filter(course=course) # Get all of the pages associated with this course (can't just do page_set because the foreign key is CourseSemester lol) all_pages = Page.objects.filter(course_sem__course=course) data = { 'title': course, 'is_watching': request.user.get_profile().is_watching(course) if request.user.is_authenticated() else False, 'course': course, 'page_types': types, 'all_pages': all_pages, 'this_sem_pages': this_sem_pages, 'course_sems': course_sems, 'current_sem': course.get_current_semester(), } return render(request, 'courses/overview.html', data)
def overview(request, department, number): try: course = get_object_or_404(Course, department=department, number=int(number)) except Http404: return render(request, "courses/404.html", {'department': department, 'number': number}) # We can't use it directly in the template file, it just won't work types = [] num_misc_pages = 0 for name, obj in page_types.iteritems(): # Get all the pages associated with this page type (and this course etc) pages = Page.objects.filter(page_type=name, course_sem__course=course, seriespage=None) external_pages = ExternalPage.objects.filter(page_type=name, course=course) num_misc_pages += pages.count() + external_pages.count() pages = filter(lambda p: p.can_view(request.user), pages) types.append({'name': name, 'url': obj.get_create_url(course), 'icon': obj.get_icon(), 'long_name': obj.long_name, 'desc': obj.description, 'list_header': obj.get_list_header(), 'list_body': obj.get_list_body(), 'pages': pages, 'external_pages': external_pages}) # Get all the course semesters related to this course course_sems = CourseSemester.objects.filter(course=course) data = { 'title': course, 'is_watching': request.user.get_profile().is_watching(course) if request.user.is_authenticated() else False, 'course': course, 'page_types': types, 'has_misc_pages': num_misc_pages > 0, 'course_sems': course_sems, 'current_sem': course.get_current_semester(), 'visible_series': course.series_set.visible(request.user), } return render(request, 'courses/overview.html', data)
def overview(request, course): # We can't use it directly in the template file, it just won't work types = [] num_misc_pages = 0 for name, obj in page_types.iteritems(): # Get all the pages associated with this page type (and this course) pages = Page.objects.filter(page_type=name, course_sem__course=course, seriespage=None) external_pages = ExternalPage.objects.filter(page_type=name, course=course) num_misc_pages += pages.count() + external_pages.count() pages = filter(lambda p: p.can_view(request.user), pages) type_data = { 'name': name, 'url': obj.get_create_url(course), 'icon': obj.get_icon(), 'long_name': obj.long_name, 'desc': obj.description, 'list_header': obj.get_list_header(), 'list_body': obj.get_list_body(), 'pages': pages, 'external_pages': external_pages } types.append(type_data) # Get all the course semesters related to this course course_sems = CourseSemester.objects.filter(course=course) if request.user.is_authenticated(): profile = request.user.get_profile() is_watching = profile.is_watching(course) is_pinned = profile.has_pinned(course) else: is_watching = False is_pinned = False return { 'is_pinned': is_pinned, 'title': str(course), 'is_watching': is_watching, 'course': course, 'page_types': types, 'has_misc_pages': num_misc_pages > 0, 'course_sems': course_sems, 'current_sem': course.get_current_semester(), 'visible_series': course.series_set.visible(request.user), }