def exercise_summary(request, book, course): """ View creating the data displayed in the class activity spreadsheet """ if is_authorized(request.user, book, course): obj_book = Books.objects.get(book_name=book) udata_list = [] udata_list1 = [] columns_list = [] columns_list1 = [] columns_list_exe = [] # for exercises columns_list.append({"sTitle": "Id"}) columns_list.append({"sTitle": "Username"}) columns_list.append({"sTitle": "Email"}) columns_list.append({"sTitle": "Score(%)"}) columns_list1.append({"sTitle": "Id"}) columns_list1.append({"sTitle": "Username"}) columns_list1.append({"sTitle": "Email"}) columns_list1.append({"sTitle": "Score(%)"}) # get list of book assignments assignments_list = ( Assignments.objects.select_related() .filter(assignment_book=obj_book) .order_by("course_module__closing_time") ) max_assignments_points = 0 students_assignment_points = [] u_book = UserBook.objects.filter(book=obj_book) exe_bme = {} assign_exe = {} for assignment in assignments_list: columns_list.append({"sTitle": str(assignment.course_module.name)}) columns_list1.append({"sTitle": str(assignment.course_module.name)}) assign_exe[assignment.course_module.name] = assignment.get_exercises() for exercise in assign_exe[assignment.course_module.name]: if BookModuleExercise.components.filter(book=obj_book, exercise=exercise).count() == 0: continue bexe = BookModuleExercise.components.filter(book=obj_book, exercise=exercise)[0] exe_bme[exercise.name] = bexe max_assignments_points += Decimal(bexe.points) columns_list.append( { "sTitle": str(exercise.name) + "(" + str(bexe.points) + ")" + '<span class="details" \ style="display:inline;" \ data-type="' + str(exercise.description) + '"></span>', "sClass": "center", } ) userData = UserData.objects.select_related().filter(book=obj_book, user__is_staff=0).order_by("user") users = [] for userdata in userData: if not userdata.user.is_staff and display_grade(userdata.user, obj_book): u_points = 0 u_data = [] u_data.append(0) u_data.append(str(userdata.user.username)) u_data.append(str(userdata.user.email)) u_data.append(0) u_data1 = [] u_data1.append(0) u_data1.append(str(userdata.user.username)) u_data1.append(str(userdata.user.email)) u_data1.append(0) for assignment in assignments_list: # get points of exercises assignment_points = 0 students_assignment_points = 0 u_assign = [] u_assign1 = [] u_assign.append(0) for exercise in assign_exe[assignment.course_module.name]: bexe = exe_bme[exercise.name] u_ex = None user_exe = UserExercise.objects.filter(user=userdata.user, exercise=exercise) if not user_exe and (not exercise.id in userdata.get_prof_list()): exe_str = "" # continue else: user_exe = user_exe[0] u_ex = user_exe assignment_points += Decimal(bexe.points) exe_str = "" if exercise.id in userdata.get_prof_list(): u_points += Decimal(bexe.points) students_assignment_points += Decimal(bexe.points) if u_ex.proficient_date <= assignment.course_module.closing_time: exe_str = ( '<span class="details" \ style="display:inline;" \ data-type="First done:%s, \ Last done:%s, Total done:%i, \ Total correct:%i, \ Proficiency date:%s">Done</span>' % ( str(u_ex.first_done), str(u_ex.last_done), int(u_ex.total_done), int(u_ex.total_correct), str(u_ex.proficient_date), ) ) else: exe_str = ( '<span class="details" \ style="display:inline;" \ data-type="First done:%s, \ Last done:%s, Total done:%i, \ Total correct:%i, \ Proficiency date:%s">Late</span>' % ( str(u_ex.first_done), str(u_ex.last_done), int(u_ex.total_done), int(u_ex.total_correct), str(u_ex.proficient_date), ) ) if ( exercise.id in userdata.get_started_list() and exercise.id not in userdata.get_prof_list() ): exe_str = ( '<span class="details" \ style="visibility: hidden; \ display:inline;" \ data-type="First done:%s, \ Last done:%s, Total done:%i, \ Total correct:%i, \ Proficiency date:%s">Started</span>' % ( str(u_ex.first_done), str(u_ex.last_done), int(u_ex.total_done), int(u_ex.total_correct), str(u_ex.proficient_date), ) ) u_assign.append(exe_str) u_assign[0] = str(students_assignment_points) u_data = u_data + u_assign u_data1.append(str(students_assignment_points)) u_points = (u_points * 100) / max_assignments_points u_data[3] = str("%.2f" % round(u_points, 2)) udata_list.append(u_data) u_data1[3] = str("%.2f" % round(u_points, 2)) udata_list1.append(u_data1) context = RequestContext( request, { "book": book, "max_points": max_assignments_points, "course": course, "udata_list": udata_list, "columns_list": columns_list, "udata_list1": udata_list1, "columns_list1": columns_list1, }, ) return render_to_response("opendsa/class_summary.html", context) else: return HttpResponseForbidden("<h1>Page Forbidden</h1>")
def merged_book(request, book, book1): """ Sepcial method to merge the CS3114AM and CS3114PM sections during Fall 2013 """ obj_book = Books.objects.get(id=book) obj_book1 = Books.objects.get(id=book1) udata_list = [] udata_list1 = [] columns_list = [] columns_list1 = [] columns_list_exe = [] # for exercises columns_list.append({"sTitle": "Id"}) columns_list.append({"sTitle": "Username"}) columns_list.append({"sTitle": "Points"}) columns_list1.append({"sTitle": "Id"}) columns_list1.append({"sTitle": "Username"}) columns_list1.append({"sTitle": "Points"}) # get list of book assignments assignments_list = ( Assignments.objects.select_related().filter(assignment_book=obj_book).order_by("course_module__closing_time") ) assignments_points_list = [] students_assignment_points = [] for assignment in assignments_list: columns_list.append({"sTitle": str(assignment.course_module.name)}) columns_list1.append({"sTitle": str(assignment.course_module.name)}) for exercise in assignment.get_exercises(): for bexe in BookModuleExercise.components.filter(book=obj_book, exercise=exercise): columns_list.append( { "sTitle": str(exercise.name) + "(" + str(bexe.points) + ")" + '<span class="details" style="display:inline;" \ data-type="' + str(exercise.description) + '"></span>', "sClass": "center", } ) userData = UserData.objects.select_related().filter(Q(book=obj_book) | Q(book=obj_book1)).order_by("user") users = [] exe_bme = {} exercises_ = {} marked_student = [] for userdata in userData: if ( not userdata.user.is_staff and (userdata.user not in marked_student) and (display_grade(userdata.user, obj_book) or display_grade(userdata.user, obj_book1)) ): marked_student.append(userdata.user) student_activity = get_all_student_data(userdata, userData) u_points = 0 u_data = [] u_data.append(0) u_data.append(str(userdata.user.username)) u_data.append(0) u_data1 = [] u_data1.append(0) u_data1.append(str(userdata.user.username)) u_data1.append(0) for assignment in assignments_list: # get points of exercises assignment_points = 0 students_assignment_points = 0 u_assign = [] u_assign1 = [] u_assign.append(0) for exercise_id in assignment.get_exercises_id(): if exercise_id not in exercises_: exercises_[exercise_id] = Exercise.objects.get(id=exercise_id) exercise = exercises_[exercise_id] if exercise.name not in exe_bme: exe_bme[exercise.name] = BookModuleExercise.components.filter(book=obj_book, exercise=exercise)[ 0 ] bexe = exe_bme[exercise.name] u_ex = None user_exe = UserExercise.objects.filter(user=userdata.user, exercise=exercise) if user_exe: u_ex = user_exe[0] assignment_points += Decimal(bexe.points) exe_str = "" if exercise.id in get_all_prof(student_activity): u_points += Decimal(bexe.points) students_assignment_points += Decimal(bexe.points) if u_ex.proficient_date <= assignment.course_module.closing_time: exe_str = ( '<span class="details" style= \ "display:inline;" data-type= \ "First done:%s, Last done:%s, \ Total done:%i, Total correct:%i, \ Proficiency date:%s">Done</span>' % ( str(u_ex.first_done), str(u_ex.last_done), int(u_ex.total_done), int(u_ex.total_correct), str(u_ex.proficient_date), ) ) else: exe_str = ( '<span class="details" style= \ "display:inline;" data-type= \ "First done:%s, Last done:%s, \ Total done:%i, Total correct:%i, \ Proficiency date:%s">Late</span>' % ( str(u_ex.first_done), str(u_ex.last_done), int(u_ex.total_done), int(u_ex.total_correct), str(u_ex.proficient_date), ) ) if exercise.id in get_all_started(student_activity) and exercise.id not in get_all_prof( student_activity ): exe_str = ( '<span class="details" style= \ "visibility: hidden; display:inline;" \ data-type="First done:%s, Last done:%s, \ Total done:%i, Total correct:%i, \ Proficiency date:%s">Started</span>' % ( str(u_ex.first_done), str(u_ex.last_done), int(u_ex.total_done), int(u_ex.total_correct), str(u_ex.proficient_date), ) ) u_assign.append(exe_str) u_assign[0] = str(students_assignment_points) u_data = u_data + u_assign u_data1.append(str(students_assignment_points)) u_data[2] = str(u_points) udata_list.append(u_data) u_data1[2] = str(u_points) udata_list1.append(u_data1) context = RequestContext( request, { "book": book, "course": "CS3114", "udata_list": udata_list, "columns_list": columns_list, "udata_list1": udata_list1, "columns_list1": columns_list1, }, ) return render_to_response("opendsa/class_summary.html", context)
def class_summary(request, book, course): """ View creating the data displayed in the class activity spreadsheet """ if is_authorized(request.user, book, course): exe_bme = [] obj_book = Books.objects.get(book_name = book) max_book_points = 0 udata_list = [] udata_list1 = [] columns_list = [] columns_list1 = [] columns_list_exe = [] #for exercises columns_list.append({"sTitle":"Id"}) columns_list.append({"sTitle":"Username"}) columns_list.append({"sTitle":"Email"}) columns_list.append({"sTitle":"Score(%)"}) #get book instances required exercises for bexe in BookModuleExercise.components.filter( \ book = obj_book): if Decimal(bexe.points) > Decimal(0): exe_bme.append(bexe) max_book_points += Decimal(bexe.points) columns_list.append({"sTitle":str(bexe.exercise.name)+ \ '('+str(bexe.points)+')'+ \ '<span class="details" \ style="display:inline;" \ data-type="' + \ str(bexe.exercise.description) + \ '"></span>',"sClass": "center" }) userData = UserData.objects.select_related().filter( \ book = obj_book, \ user__is_staff = 0 \ ).order_by('user') users = [] for userdata in userData: if not userdata.user.is_staff and display_grade( \ userdata.user, obj_book): u_points = 0 u_data = [] u_data.append(0) u_data.append(str(userdata.user.username)) u_data.append(str(userdata.user.email)) u_data.append(0) u_assign = [] for bexe in exe_bme: u_ex = None user_exe = UserExercise.objects.filter( \ user = userdata.user, \ exercise = bexe.exercise) if not user_exe and (not bexe.exercise.id in userdata.get_prof_list()): exe_str = '' #continue else: user_exe = user_exe[0] u_ex = user_exe #assignment_points += Decimal(bexe.points) exe_str = '' if bexe.exercise.id in userdata.get_prof_list(): u_points += Decimal(bexe.points) #students_assignment_points += Decimal(bexe.points) #if u_ex.proficient_date <= \ # assignment.course_module.closing_time: exe_str = '<span class="details" \ style="display:inline;" \ data-type="First done:%s, \ Last done:%s, Total done:%i, \ Total correct:%i, \ Proficiency date:%s">Done</span>' \ %(str(u_ex.first_done), \ str(u_ex.last_done), \ int(u_ex.total_done), \ int(u_ex.total_correct), \ str(u_ex.proficient_date)) #else: # exe_str = '<span class="details" \ # style="display:inline;" \ # data-type="First done:%s, \ # Last done:%s, Total done:%i, \ # Total correct:%i, \ # Proficiency date:%s">Late</span>' \ # %(str(u_ex.first_done), \ # str(u_ex.last_done), \ # int(u_ex.total_done), \ # int(u_ex.total_correct), \ # str(u_ex.proficient_date)) if bexe.exercise.id in userdata.get_started_list() and \ bexe.exercise.id not in \ userdata.get_prof_list(): exe_str = '<span class="details" \ style="visibility: hidden; \ display:inline;" \ data-type="First done:%s, \ Last done:%s, Total done:%i, \ Total correct:%i, \ Proficiency date:%s">Started</span>' \ %(str(u_ex.first_done), \ str(u_ex.last_done), \ int(u_ex.total_done), \ int(u_ex.total_correct), \ str(u_ex.proficient_date)) u_assign.append(exe_str) #u_assign[0] = str(students_assignment_points) u_data = u_data + u_assign if max_book_points == 0: max_book_points = 1 u_points = (u_points * 100) / max_book_points u_data[3] = str("%.2f" % round(u_points,2)) udata_list.append(u_data) context = RequestContext(request, {'book':book, \ 'max_points':max_book_points, \ 'course':course, \ 'udata_list': udata_list, \ 'columns_list':columns_list}) return render_to_response("opendsa/all_summary.html", context) else: return HttpResponseForbidden('<h1>Page Forbidden</h1>')
def exercise_summary(request, book, course): """ View creating the data displayed in the class assignments activity spreadsheet """ if is_authorized(request.user, book, course): obj_book = Books.objects.get(book_name = book) udata_list = [] udata_list1 = [] wrong_exe = [] columns_list = [] columns_list1 = [] columns_list_exe = [] #for exercises columns_list.append({"sTitle":"Id"}) columns_list.append({"sTitle":"Username"}) columns_list.append({"sTitle":"Email"}) columns_list.append({"sTitle":"Score(%)"}) columns_list1.append({"sTitle":"Id"}) columns_list1.append({"sTitle":"Username"}) columns_list1.append({"sTitle":"Email"}) columns_list1.append({"sTitle":"Score(%)"}) #get list of book assignments assignments_list = Assignments.objects.select_related().filter( \ assignment_book=obj_book).order_by( \ 'course_module__closing_time') max_assignments_points = 0 students_assignment_points = [] u_book = UserBook.objects.filter(book = obj_book) exe_bme = {} assign_exe = {} assignments_list_tmp = [] for assignment in assignments_list: if assignment.course_module.course_instance.instance_name == course: assignments_list_tmp.append(assignment) columns_list.append({"sTitle":str(assignment.course_module.name)}) columns_list1.append({"sTitle":str(assignment.course_module.name)}) assign_exe[assignment.course_module.name] = assignment.get_exercises() for exercise in assign_exe[assignment.course_module.name]: if BookModuleExercise.components.filter( \ book = obj_book, \ exercise = exercise).count() == 0: continue bexe = BookModuleExercise.components.filter( \ book = obj_book, \ exercise = exercise)[0] exe_bme[exercise.name] = bexe max_assignments_points += Decimal(bexe.points) columns_list.append({"sTitle":str(exercise.name)+ \ '('+str(bexe.points)+')'+ \ '<span class="details" \ style="display:inline;" \ data-type="' + \ str(exercise.description) + \ '"></span>',"sClass": "center" }) #we only work assignments relevants to this course instance assignments_list = assignments_list_tmp userData = UserData.objects.select_related().filter( \ book = obj_book, \ user__is_staff = 0 \ ).order_by('user') users = [] for userdata in userData: if not userdata.user.is_staff and display_grade( \ userdata.user, obj_book): u_points = 0 u_data = [] u_data.append(0) u_data.append(str(userdata.user.username)) u_data.append(str(userdata.user.email)) u_data.append(0) u_data1 = [] u_data1.append(0) u_data1.append(str(userdata.user.username)) u_data1.append(str(userdata.user.email)) u_data1.append(0) for assignment in assignments_list: #get points of exercises assignment_points = 0 students_assignment_points = 0 u_assign = [] u_assign1 = [] u_assign.append(0) for exercise in assign_exe[assignment.course_module.name]: if exercise.name not in exe_bme: if exercise.name not in wrong_exe: wrong_exe.append(str(exercise.name)) continue bexe = exe_bme[exercise.name] u_ex = None user_exe = UserExercise.objects.filter( \ user = userdata.user, \ exercise = exercise) if not user_exe and (not exercise.id in userdata.get_prof_list()): exe_str = '' #continue else: user_exe = user_exe[0] u_ex = user_exe assignment_points += Decimal(bexe.points) exe_str = '' if exercise.id in userdata.get_prof_list(): #u_points += Decimal(bexe.points) #students_assignment_points += Decimal(bexe.points) if u_ex.proficient_date <= \ assignment.course_module.closing_time: u_points += Decimal(bexe.points) students_assignment_points += Decimal(bexe.points) exe_str = '<span class="details" \ style="display:inline;" \ data-type="First done:%s, \ Last done:%s, Total done:%i, \ Total correct:%i, \ Proficiency date:%s">Done</span>' \ %(str(u_ex.first_done), \ str(u_ex.last_done), \ int(u_ex.total_done), \ int(u_ex.total_correct), \ str(u_ex.proficient_date)) else: penalty = Decimal(bexe.points) * (Decimal(1)-Decimal(assignment.course_module.late_submission_penalty)) u_points += Decimal(penalty) students_assignment_points += Decimal(penalty) exe_str = '<span class="details" \ style="display:inline;" \ data-type="First done:%s, \ Last done:%s, Total done:%i, \ Total correct:%i, \ Proficiency date:%s">Late</span>' \ %(str(u_ex.first_done), \ str(u_ex.last_done), \ int(u_ex.total_done), \ int(u_ex.total_correct), \ str(u_ex.proficient_date)) if exercise.id in userdata.get_started_list() and \ exercise.id not in \ userdata.get_prof_list(): exe_str = '<span class="details" \ style="visibility: hidden; \ display:inline;" \ data-type="First done:%s, \ Last done:%s, Total done:%i, \ Total correct:%i, \ Proficiency date:%s">Started</span>' \ %(str(u_ex.first_done), \ str(u_ex.last_done), \ int(u_ex.total_done), \ int(u_ex.total_correct), \ str(u_ex.proficient_date)) u_assign.append(exe_str) u_assign[0] = str(students_assignment_points) u_data = u_data + u_assign u_data1.append(str(students_assignment_points)) if max_assignments_points == 0: max_assignments_points = 1 u_points = (u_points * 100) / max_assignments_points u_data[3] = str("%.2f" % round(u_points,2)) udata_list.append(u_data) u_data1[3] = str("%.2f" % round(u_points,2)) udata_list1.append(u_data1) context = RequestContext(request, {'book':book, \ 'max_points':max_assignments_points, \ 'course':course, \ 'udata_list': udata_list, \ 'wrong_exe': str(wrong_exe).strip('[]'), \ 'columns_list':columns_list, \ 'udata_list1': udata_list1, \ 'columns_list1':columns_list1}) return render_to_response("opendsa/class_summary.html", context) else: return HttpResponseForbidden('<h1>Page Forbidden</h1>')
def merged_book(request, book, book1): """ Sepcial method to merge the CS3114AM and CS3114PM sections during Fall 2013 """ obj_book = Books.objects.get(id = book) obj_book1 = Books.objects.get(id = book1) udata_list = [] udata_list1 = [] columns_list = [] columns_list1 = [] columns_list_exe = [] #for exercises columns_list.append({"sTitle":"Id"}) columns_list.append({"sTitle":"Username"}) columns_list.append({"sTitle":"Points"}) columns_list1.append({"sTitle":"Id"}) columns_list1.append({"sTitle":"Username"}) columns_list1.append({"sTitle":"Points"}) #get list of book assignments assignments_list = Assignments.objects.select_related().filter( \ assignment_book = obj_book).order_by( \ 'course_module__closing_time') assignments_points_list = [] students_assignment_points = [] for assignment in assignments_list: columns_list.append({"sTitle":str(assignment.course_module.name)}) columns_list1.append({"sTitle":str(assignment.course_module.name)}) for exercise in assignment.get_exercises(): for bexe in BookModuleExercise.components.filter(book = obj_book, \ exercise = exercise): columns_list.append({"sTitle":str(exercise.name)+ \ '('+str(bexe.points)+')' + \ '<span class="details" style="display:inline;" \ data-type="' + \ str(exercise.description) + \ '"></span>',"sClass": "center" }) userData = UserData.objects.select_related().filter(Q(book=obj_book) | \ Q(book=obj_book1)).order_by('user') users = [] exe_bme = {} exercises_ = {} marked_student = [] for userdata in userData: if not userdata.user.is_staff \ and (userdata.user not in marked_student) \ and (display_grade(userdata.user,obj_book) \ or display_grade(userdata.user,obj_book1)): marked_student.append(userdata.user) student_activity = get_all_student_data(userdata, userData) u_points = 0 u_data = [] u_data.append(0) u_data.append(str(userdata.user.username)) u_data.append(0) u_data1 = [] u_data1.append(0) u_data1.append(str(userdata.user.username)) u_data1.append(0) for assignment in assignments_list: #get points of exercises assignment_points = 0 students_assignment_points = 0 u_assign = [] u_assign1 = [] u_assign.append(0) for exercise_id in assignment.get_exercises_id(): if exercise_id not in exercises_: exercises_[exercise_id] = Exercise.objects.get( \ id=exercise_id) exercise = exercises_[exercise_id] if exercise.name not in exe_bme: exe_bme[exercise.name] = \ BookModuleExercise.components.filter( \ book = obj_book, \ exercise = exercise)[0] bexe = exe_bme[exercise.name] u_ex = None user_exe = UserExercise.objects.filter(user=userdata.user, \ exercise=exercise) if user_exe: u_ex = user_exe[0] assignment_points += Decimal(bexe.points) exe_str = '' if exercise.id in get_all_prof(student_activity): u_points += Decimal(bexe.points) students_assignment_points += Decimal(bexe.points) if u_ex.proficient_date <= \ assignment.course_module.closing_time: exe_str = '<span class="details" style= \ "display:inline;" data-type= \ "First done:%s, Last done:%s, \ Total done:%i, Total correct:%i, \ Proficiency date:%s">Done</span>' \ %(str(u_ex.first_done), \ str(u_ex.last_done), \ int(u_ex.total_done), \ int(u_ex.total_correct), \ str(u_ex.proficient_date)) else: exe_str = '<span class="details" style= \ "display:inline;" data-type= \ "First done:%s, Last done:%s, \ Total done:%i, Total correct:%i, \ Proficiency date:%s">Late</span>' \ %(str(u_ex.first_done), \ str(u_ex.last_done), \ int(u_ex.total_done), \ int(u_ex.total_correct), \ str(u_ex.proficient_date)) if exercise.id in get_all_started(student_activity) \ and exercise.id not in \ get_all_prof(student_activity): exe_str = '<span class="details" style= \ "visibility: hidden; display:inline;" \ data-type="First done:%s, Last done:%s, \ Total done:%i, Total correct:%i, \ Proficiency date:%s">Started</span>' \ %(str(u_ex.first_done), \ str(u_ex.last_done), \ int(u_ex.total_done), \ int(u_ex.total_correct), \ str(u_ex.proficient_date)) u_assign.append(exe_str) u_assign[0] = str(students_assignment_points) u_data = u_data + u_assign u_data1.append(str(students_assignment_points)) u_data[2] = str(u_points ) udata_list.append(u_data) u_data1[2] = str(u_points ) udata_list1.append(u_data1) context = RequestContext(request, {'book':book,'course':'CS3114', \ 'udata_list': udata_list, \ 'columns_list':columns_list, \ 'udata_list1': udata_list1, \ 'columns_list1':columns_list1}) return render_to_response("opendsa/class_summary.html", context)