def main(request, course_prefix, course_suffix): #Common page data is already run in middleware #try: # common_page_data = get_common_page_data(request, course_prefix, course_suffix) #except Course.DoesNotExist: # raise Http404 common_page_data=request.common_page_data ##JASON 9/5/12### ##For Launch, but I don't think it needs to be removed later## if common_page_data['course'].preview_only_mode: if not common_page_data['is_course_admin']: redir = reverse('courses.preview.views.preview',args=[course_prefix, course_suffix]) if (settings.INSTANCE == 'stage' or settings.INSTANCE == 'prod'): redir = 'https://'+request.get_host()+redir return redirect(redir) announcement_list = Announcement.objects.getByCourse(course=common_page_data['course']).order_by('-time_created')[:11] if len(announcement_list) > 10: many_announcements = True announcement_list = announcement_list[0:10] else: many_announcements = False if request.user.is_authenticated(): is_logged_in = 1 news_list = common_page_data['ready_course'].newsevent_set.all().order_by('-time_created')[0:5] else: is_logged_in = 0 news_list = [] course = common_page_data['course'] contentsection_list = ContentSection.objects.getByCourse(course=course) video_list = Video.objects.getByCourse(course=course) pset_list = ProblemSet.objects.getByCourse(course=course) additional_pages = AdditionalPage.objects.getSectionPagesByCourse(course=course) file_list = File.objects.getByCourse(course=course) groups = ContentGroup.objects.getByCourse(course=course) level1_items, level2_items = group_data(groups) full_contentsection_list, full_index_list = get_full_contentsection_list(course, contentsection_list, video_list, pset_list, additional_pages, file_list, level2_items) return render_to_response('courses/view.html', {'common_page_data': common_page_data, 'announcement_list': announcement_list, 'many_announcements':many_announcements, 'news_list': news_list, 'contentsection_list': full_contentsection_list, 'video_list': video_list, 'pset_list': pset_list, 'full_index_list': full_index_list, 'is_logged_in': is_logged_in }, context_instance=RequestContext(request))
def get_left_nav_content(course): contentsection_list = ContentSection.objects.getByCourse(course=course) video_list = Video.objects.getByCourse(course=course) pset_list = ProblemSet.objects.getByCourse(course=course) additional_pages = AdditionalPage.objects.getSectionPagesByCourse(course=course) file_list = File.objects.getByCourse(course=course) groups = ContentGroup.objects.getByCourse(course=course) level1_items, level2_items = group_data(groups) exam_list = Exam.objects.getByCourse(course=course) return contentsection_list, video_list, pset_list, additional_pages, file_list, groups, exam_list, level2_items
def main(request, course_prefix, course_suffix, slug): try: common_page_data = get_common_page_data(request, course_prefix, course_suffix) page = AdditionalPage.objects.get(course=common_page_data['course'], slug=slug) except: raise Http404 if not common_page_data['is_course_admin']: visit_log = PageVisitLog( course = common_page_data['ready_course'], user = request.user, page_type = 'additional_page', object_id = str(page.id), ) visit_log.save() if common_page_data['is_course_admin'] and common_page_data['course_mode'] == 'draft' and common_page_data['view_mode'] == 'edit': template = 'additional_pages/edit.html' else: template = 'additional_pages/view.html' course = common_page_data['course'] contentsection_list = ContentSection.objects.getByCourse(course=course) video_list = Video.objects.getByCourse(course=course) pset_list = ProblemSet.objects.getByCourse(course=course) additional_pages = AdditionalPage.objects.getSectionPagesByCourse(course=course) file_list = File.objects.getByCourse(course=course) groups = ContentGroup.objects.getByCourse(course=course) level1_items, level2_items = group_data(groups) full_contentsection_list, full_index_list = get_full_contentsection_list(course, contentsection_list, video_list, pset_list, additional_pages, file_list, level2_items) if request.user.is_authenticated(): is_logged_in = 1 else: is_logged_in = 0 return render_to_response(template, {'common_page_data': common_page_data, 'page': page, 'contentsection_list': full_contentsection_list, 'full_index_list': full_index_list, 'is_logged_in': is_logged_in}, context_instance=RequestContext(request))
def view(request, course_prefix, course_suffix, slug): common_page_data = request.common_page_data try: #getByCourse takes care of checking for draft vs live, is_deleted and live times video = Video.objects.getByCourse(course=common_page_data['course']).get(slug=slug) except Video.DoesNotExist: raise Http404 if not common_page_data['is_course_admin']: visit_log = PageVisitLog( course = common_page_data['ready_course'], user = request.user, page_type= 'video', object_id = str(video.id), ) visit_log.save() if not 'video_quiz_mode' in request.session: #Default to include quizzes in viewing videos request.session['video_quiz_mode'] = "quizzes included" videos = Video.objects.getByCourse(course=common_page_data['course']) #Get index of current video cur_index = None #just code safety for index, item in enumerate(videos): if item == video: cur_index = index break #code safety next_slug = None prev_slug = None if cur_index is not None: if cur_index > 0: prev_slug = videos[cur_index-1].slug else: prev_slug = None if cur_index < videos.count() - 1: next_slug = videos[cur_index+1].slug else: next_slug = None video_rec = request.user.videoactivity_set.filter(video=video) if video_rec: video_rec = video_rec[0] else: #note student field to be renamed to user, VideoActivity for all users now video_rec = VideoActivity(student=request.user, course=common_page_data['course'], video=video) video_rec.save() has_ex = VideoToExercise.objects.filter(is_deleted=False, video=video).exists() no_ex = 1 if (not has_ex) or request.session['video_quiz_mode'] != "quizzes included" else 0 course = common_page_data['course'] full_contentsection_list, full_index_list = get_full_contentsection_list(course, filter_children=True) if request.user.is_authenticated(): is_logged_in = 1 else: is_logged_in = 0 key = 'video:'+str(video.id) l1items, l2items = group_data(ContentGroup.objects.getByCourse(course=course)) downloadable_content = get_children(key, l1items, l2items) return render_to_response('videos/view.html', { 'common_page_data': common_page_data, 'video': video, 'video_rec': video_rec, 'prev_slug': prev_slug, 'next_slug': next_slug, 'no_ex': no_ex, 'contentsection_list': full_contentsection_list, 'full_index_list': full_index_list, 'is_logged_in': is_logged_in, 'downloadable_content':downloadable_content, }, context_instance=RequestContext(request))
def show(request, course_prefix, course_suffix, pset_slug): common_page_data = request.common_page_data try: ps = ProblemSet.objects.getByCourse(course=common_page_data['course']).get(slug=pset_slug) except ProblemSet.DoesNotExist: messages.add_message(request,messages.ERROR, 'This Problemset is not visible in the student view at this time. Please note that students will not see this message.') return HttpResponseRedirect(reverse('problemsets.views.listAll', args=(course_prefix, course_suffix))) except ProblemSet.MultipleObjectsReturned: messages.add_message(request,messages.ERROR, 'We found multiple problem sets with the same slug. Please try to delete one. This most likely happened due to copying content from another course.') return HttpResponseRedirect(reverse('problemsets.views.listAll', args=(course_prefix, course_suffix))) if not common_page_data['is_course_admin']: visit_log = PageVisitLog( course = common_page_data['ready_course'], user = request.user, page_type = 'problemset', object_id = str(ps.id), ) visit_log.save() activity_list = [] cursor = connection.cursor() #Used to test for valid data cursor.execute("SELECT `c2g_problemset_to_exercise`.`problemSet_id`, `c2g_exercises`.`fileName`, c2g_problemset_to_exercise.number, \ min(case when c2g_problem_activity.complete = 1 then c2g_problem_activity.id else null end) as `first_correct_answer`, \ max(c2g_problem_activity.id) as `max_activity_id` \ FROM `c2g_problem_activity` \ LEFT OUTER JOIN `c2g_problemset_to_exercise` ON (`c2g_problem_activity`.`problemset_to_exercise_id` = `c2g_problemset_to_exercise`.`id`) \ INNER JOIN `c2g_problem_sets` ON (`c2g_problemset_to_exercise`.`problemSet_id` = `c2g_problem_sets`.`id`) \ INNER JOIN `c2g_exercises` ON (`c2g_problemset_to_exercise`.`exercise_id` = `c2g_exercises`.`id`) \ WHERE (`c2g_problemset_to_exercise`.`problemSet_id` = %s \ AND `c2g_problem_activity`.`student_id` = %s ) \ GROUP BY `c2g_problemset_to_exercise`.`problemSet_id`, `c2g_exercises`.`fileName`, c2g_problemset_to_exercise.number \ ORDER BY c2g_problemset_to_exercise.number", [ps.id, request.user.id]) raw_activity_list = [] for row in cursor.fetchall(): problemset_id = row[0] filename = row[1] number = row[2] first_correct_answer = row[3] max_activity_id = row[4] raw_activity_item = {'problemset_id' : problemset_id, 'filename' : filename, 'number' : number, 'first_correct_answer' : first_correct_answer, 'max_activity_id' : max_activity_id } raw_activity_list.append(raw_activity_item) #Find deleted files cursor.execute("select e.fileName, p2e.problemSet_id, \ count(case when p2e.is_deleted = 0 then 1 else null end) as `num_active` \ from c2g_problemset_to_exercise p2e, c2g_exercises e \ where p2e.exercise_id = e.id \ and p2e.problemSet_id = %s \ and p2e.mode = 'ready' \ group by e.filename, p2e.problemSet_id \ having num_active = 0", [ps.id]) deleted_exercise_list = [] for row in cursor.fetchall(): filename = row[0] problemset_id = row[1] filename_item = {'filename' : filename, 'problemset_id' : problemset_id } deleted_exercise_list.append(filename_item) for raw_activity_item in raw_activity_list: problemset_id = raw_activity_item['problemset_id'] filename = raw_activity_item['filename'] number = raw_activity_item['number'] first_correct_answer = raw_activity_item['first_correct_answer'] max_activity_id = raw_activity_item['max_activity_id'] if not filename_in_deleted_list( filename, problemset_id, deleted_exercise_list): if first_correct_answer == None or first_correct_answer == max_activity_id: activity_item = ProblemActivity.objects.get(id=max_activity_id) else: activity_item = ProblemActivity.objects.get(id=first_correct_answer) activity_list.append((activity_item, number)) course = common_page_data['course'] contentsection_list = ContentSection.objects.getByCourse(course=course) video_list = Video.objects.getByCourse(course=course) pset_list = ProblemSet.objects.getByCourse(course=course) additional_pages = AdditionalPage.objects.getSectionPagesByCourse(course=course) file_list = File.objects.getByCourse(course=course) groups = ContentGroup.objects.getByCourse(course=course) level1_items, level2_items = group_data(groups) full_contentsection_list, full_index_list = get_full_contentsection_list(course, contentsection_list, video_list, pset_list, additional_pages, file_list, level2_items) if request.user.is_authenticated(): is_logged_in = 1 else: is_logged_in = 0 return render_to_response('problemsets/problemset.html', {'common_page_data':common_page_data, 'pset': ps, 'pset_url':ps.path, 'pset_type':ps.assessment_type, 'pset_penalty':ps.resubmission_penalty, 'pset_attempts_allowed':ps.submissions_permitted, 'activity_list': activity_list, 'contentsection_list': full_contentsection_list, 'full_index_list': full_index_list, 'is_logged_in': is_logged_in }, context_instance=RequestContext(request))