def user_registrations_view(request): if not request.user.is_staff: raise Http404 registrations = [] start_date = timezone.now() - datetime.timedelta(days=31) end_date = timezone.now() interval = 'days' if request.method == 'POST': form = DateRangeIntervalForm(request.POST) if form.is_valid(): start_date = form.cleaned_data.get("start_date") start_date = datetime.datetime.strptime(start_date, "%Y-%m-%d") end_date = form.cleaned_data.get("end_date") end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d") interval = form.cleaned_data.get("interval") else: data = {} data['start_date'] = start_date data['end_date'] = end_date data['interval'] = interval form = DateRangeIntervalForm(initial=data) if interval == 'days': no_days = (end_date - start_date).days + 1 for i in range(0, no_days, +1): temp = start_date + datetime.timedelta(days=i) day = temp.strftime("%d") month = temp.strftime("%m") year = temp.strftime("%Y") count = User.objects.filter(date_joined__year=year, date_joined__month=month, date_joined__day=day).count() registrations.append([temp.strftime("%d %b %Y"), count]) else: delta = relativedelta(months=+1) no_months = 0 tmp_date = start_date while tmp_date <= end_date: tmp_date += delta no_months += 1 for i in range(0, no_months, +1): temp = start_date + relativedelta(months=+i) month = temp.strftime("%m") year = temp.strftime("%Y") count = User.objects.filter(date_joined__month=month, date_joined__year=year).count() registrations.append([temp.strftime("%b %Y"), count]) previous_user_registrations = User.objects.filter(date_joined__lt=start_date).count() return render_to_response('oppia/viz/user-registrations.html', {'form': form, 'user_registrations': registrations, 'interval': interval, 'previous_user_registrations': previous_user_registrations}, context_instance=RequestContext(request))
def home_view(request): activity = [] if request.user.is_authenticated(): start_date = timezone.now() - datetime.timedelta(days=31) end_date = timezone.now() interval = 'days' if request.method == 'POST': form = DateRangeIntervalForm(request.POST) if form.is_valid(): start_date = form.cleaned_data.get("start_date") start_date = datetime.datetime.strptime(start_date,"%Y-%m-%d") end_date = form.cleaned_data.get("end_date") end_date = datetime.datetime.strptime(end_date,"%Y-%m-%d") interval = form.cleaned_data.get("interval") else: data = {} data['start_date'] = start_date data['end_date'] = end_date data['interval'] = interval form = DateRangeIntervalForm(initial=data) if interval == 'days': no_days = (end_date-start_date).days + 1 for i in range(0,no_days,+1): temp = start_date + datetime.timedelta(days=i) day = temp.strftime("%d") month = temp.strftime("%m") year = temp.strftime("%Y") count = Tracker.objects.filter(course__isnull=False, course__is_draft=False, user__is_staff=False, course__is_archived=False,tracker_date__day=day,tracker_date__month=month,tracker_date__year=year).count() activity.append([temp.strftime("%d %b %Y"),count]) else: delta = relativedelta(months=+1) no_months = 0 tmp_date = start_date while tmp_date <= end_date: print tmp_date tmp_date += delta no_months += 1 for i in range(0,no_months,+1): temp = start_date + relativedelta(months=+i) month = temp.strftime("%m") year = temp.strftime("%Y") count = Tracker.objects.filter(course__isnull=False, course__is_draft=False, user__is_staff=False, course__is_archived=False,tracker_date__month=month,tracker_date__year=year).count() activity.append([temp.strftime("%b %Y"),count]) else: form = None leaderboard = Points.get_leaderboard(10) return render_to_response('oppia/home.html', {'form': form, 'recent_activity':activity, 'leaderboard':leaderboard}, context_instance=RequestContext(request))
def recent_activity(request, course_id): course, response = can_view_course_detail(request, course_id) if response is not None: return response dashboard_accessed.send(sender=None, request=request, data=course) start_date = datetime.datetime.now() - datetime.timedelta(days=31) end_date = datetime.datetime.now() interval = 'days' if request.method == 'POST': form = DateRangeIntervalForm(request.POST) if form.is_valid(): start_date = form.cleaned_data.get("start_date") start_date = datetime.datetime.strptime(start_date + " 00:00:00", "%Y-%m-%d %H:%M:%S") end_date = form.cleaned_data.get("end_date") end_date = datetime.datetime.strptime(end_date + " 23:59:59", "%Y-%m-%d %H:%M:%S") interval = form.cleaned_data.get("interval") else: data = {} data['start_date'] = start_date data['end_date'] = end_date data['interval'] = interval form = DateRangeIntervalForm(initial=data) dates = [] if interval == 'days': daily_stats = CourseDailyStats.objects.filter(course=course, day__gte=start_date, day__lte=end_date)\ .values('day','type')\ .annotate(total=Sum('total')) dates = generate_graph_data(daily_stats, False) else: monthly_stats = CourseDailyStats.objects.filter(course=course, day__gte=start_date, day__lte=end_date)\ .extra({'month':'month(day)', 'year':'year(day)'})\ .values('month','year','type')\ .annotate(total=Sum('total'))\ .order_by('year','month') dates = generate_graph_data(monthly_stats, True) leaderboard = Points.get_leaderboard(10, course) return render_to_response('oppia/course/activity.html', { 'course': course, 'form': form, 'data': dates, 'leaderboard': leaderboard }, context_instance=RequestContext(request))
def recent_activity(request, course_id): course, response = can_view_course_detail(request, course_id) if response is not None: return response dashboard_accessed.send(sender=None, request=request, data=course) start_date = datetime.datetime.now() - datetime.timedelta(days=31) end_date = datetime.datetime.now() interval = "days" if request.method == "POST": form = DateRangeIntervalForm(request.POST) if form.is_valid(): start_date = form.cleaned_data.get("start_date") start_date = datetime.datetime.strptime(start_date + " 00:00:00", "%Y-%m-%d %H:%M:%S") end_date = form.cleaned_data.get("end_date") end_date = datetime.datetime.strptime(end_date + " 23:59:59", "%Y-%m-%d %H:%M:%S") interval = form.cleaned_data.get("interval") else: data = {} data["start_date"] = start_date data["end_date"] = end_date data["interval"] = interval form = DateRangeIntervalForm(initial=data) dates = [] if interval == "days": daily_stats = ( CourseDailyStats.objects.filter(course=course, day__gte=start_date, day__lte=end_date) .values("day", "type") .annotate(total=Sum("total")) ) dates = generate_graph_data(daily_stats, False) else: monthly_stats = ( CourseDailyStats.objects.filter(course=course, day__gte=start_date, day__lte=end_date) .extra({"month": "month(day)", "year": "year(day)"}) .values("month", "year", "type") .annotate(total=Sum("total")) .order_by("year", "month") ) dates = generate_graph_data(monthly_stats, True) leaderboard = Points.get_leaderboard(10, course) return render_to_response( "oppia/course/activity.html", {"course": course, "form": form, "data": dates, "leaderboard": leaderboard}, context_instance=RequestContext(request), )
def recent_activity(request,id): course = check_can_view(request, id) start_date = datetime.datetime.now() - datetime.timedelta(days=31) end_date = datetime.datetime.now() interval = 'days' if request.method == 'POST': form = DateRangeIntervalForm(request.POST) if form.is_valid(): start_date = form.cleaned_data.get("start_date") start_date = datetime.datetime.strptime(start_date,"%Y-%m-%d") end_date = form.cleaned_data.get("end_date") end_date = datetime.datetime.strptime(end_date,"%Y-%m-%d") interval = form.cleaned_data.get("interval") else: data = {} data['start_date'] = start_date data['end_date'] = end_date data['interval'] = interval form = DateRangeIntervalForm(initial=data) dates = [] if interval == 'days': no_days = (end_date-start_date).days + 1 for i in range(0,no_days,+1): temp = start_date + datetime.timedelta(days=i) day = temp.strftime("%d") month = temp.strftime("%m") year = temp.strftime("%Y") count_objs = Tracker.objects.filter(course=course,tracker_date__day=day,tracker_date__month=month,tracker_date__year=year).values('type').annotate(total=Count('type')) count_activity = {'page':0, 'quiz':0, 'media':0, 'resource':0, 'monitor': 0, 'total':0} for co in count_objs: if co['type'] in count_activity: count_activity[co['type']] = count_activity[co['type']] + co['total'] count_activity['total'] = count_activity['total'] + co['total'] else: count_activity[co['type']] = 0 count_activity[co['type']] = count_activity[co['type']] + co['total'] count_activity['total'] = count_activity['total'] + co['total'] dates.append([temp.strftime("%d %b %y"),count_activity]) else: delta = relativedelta(months=+1) no_months = 0 tmp_date = start_date while tmp_date <= end_date: print tmp_date tmp_date += delta no_months += 1 for i in range(0,no_months,+1): temp = start_date + relativedelta(months=+i) month = temp.strftime("%m") year = temp.strftime("%Y") count_objs = Tracker.objects.filter(course=course,tracker_date__month=month,tracker_date__year=year).values('type').annotate(total=Count('type')) count_activity = {'page':0, 'quiz':0, 'media':0, 'resource':0, 'monitor': 0, 'total':0} for co in count_objs: if co['type'] in count_activity: count_activity[co['type']] = count_activity[co['type']] + co['total'] count_activity['total'] = count_activity['total'] + co['total'] else: count_activity[co['type']] = 0 count_activity[co['type']] = count_activity[co['type']] + co['total'] count_activity['total'] = count_activity['total'] + co['total'] dates.append([temp.strftime("%b %y"),count_activity]) leaderboard = Points.get_leaderboard(10, course) nav = get_nav(course,request.user) return render_to_response('oppia/course/activity.html', {'course': course, 'form': form, 'nav': nav, 'data':dates, 'leaderboard':leaderboard}, context_instance=RequestContext(request))
def home_view(request): activity = [] leaderboard = None if request.user.is_authenticated: # create profile if none exists (historical for very old users) try: up = request.user.userprofile except UserProfile.DoesNotExist: up = UserProfile() up.user = request.user up.save() dashboard_accessed.send(sender=None, request=request, data=None) # if user is student redirect to their scorecard if up.is_student_only(): return HttpResponseRedirect(reverse('profile_user_activity', args=[request.user.id])) # is user is teacher redirect to teacher home if up.is_teacher_only(): return HttpResponseRedirect(reverse('oppia_teacher_home')) start_date = timezone.now() - datetime.timedelta(days=31) end_date = timezone.now() interval = 'days' if request.method == 'POST': form = DateRangeIntervalForm(request.POST) if form.is_valid(): start_date = form.cleaned_data.get("start_date") start_date = datetime.datetime.strptime(start_date, "%Y-%m-%d") end_date = form.cleaned_data.get("end_date") end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d") interval = form.cleaned_data.get("interval") else: data = {} data['start_date'] = start_date data['end_date'] = end_date data['interval'] = interval form = DateRangeIntervalForm(initial=data) if interval == 'days': no_days = (end_date - start_date).days + 1 tracker_stats = CourseDailyStats.objects.filter(day__gte=start_date, day__lte=end_date).values('day').annotate(count=Sum('total')) for i in range(0, no_days, +1): temp = start_date + datetime.timedelta(days=i) count = next((dct['count'] for dct in tracker_stats if dct['day'] == temp.date()), 0) activity.append([temp.strftime("%d %b %Y"), count]) else: delta = relativedelta(months=+1) no_months = 0 tmp_date = start_date while tmp_date <= end_date: tmp_date += delta no_months += 1 for i in range(0, no_months, +1): temp = start_date + relativedelta(months=+i) month = temp.strftime("%m") year = temp.strftime("%Y") count = CourseDailyStats.objects.filter(day__month=month, day__year=year).aggregate(total=Sum('total')).get('total', 0) activity.append([temp.strftime("%b %Y"), 0 if count is None else count]) leaderboard = Points.get_leaderboard(10) else: form = None return render(request, 'oppia/home.html', {'form': form, 'activity_graph_data': activity, 'leaderboard': leaderboard})
def method_mixes_view(request): if not request.user.is_staff: raise Http404 tracker_methods = [] tracker_dict = {} tracker_list = [] sections_list = [] trackers = Tracker.objects.filter(course_id=13, type='page').values('section_title'). \ annotate(count=Count('section_title')).order_by('section_title') for track in trackers: sec_title = json.loads(track['section_title']) sec_title = sec_title['en'] sections_list.append(sec_title) start_date = timezone.now() - datetime.timedelta(days=31) end_date = timezone.now() interval = 'days' if request.method == 'POST': form = DateRangeIntervalForm(request.POST) if form.is_valid(): start_date = form.cleaned_data.get("start_date") start_date = datetime.datetime.strptime(start_date, "%Y-%m-%d") end_date = form.cleaned_data.get("end_date") end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d") interval = form.cleaned_data.get("interval") else: data = {'start_date': start_date, 'end_date': end_date, 'interval': interval} form = DateRangeIntervalForm(initial=data) if interval == 'days': no_days = (end_date - start_date).days + 1 for i in range(0, no_days, +1): temp = start_date + datetime.timedelta(days=i) day = temp.strftime("%d") month = temp.strftime("%m") year = temp.strftime("%Y") trackers = Tracker.objects.filter(course_id=13, type='page', submitted_date__year=year, submitted_date__month=month, submitted_date__day=day). \ values('section_title').annotate(count=Count('section_title')).order_by('section_title') count = trackers.count() for meth in trackers: sec_title = json.loads(meth['section_title']) sec_title = sec_title['en'] meth['section_title'] = sec_title key = temp.strftime("%d %b %Y") meth['date'] = key if key in tracker_dict.keys(): tracker_dict[key].append(meth) else: tracker_dict[key] = [meth] tracker_list.append(tracker_dict[key]) if count == 0: temp_dict = {} key = temp.strftime("%d %b %Y") temp_dict[key] = [] for sec in sections_list: temp_dict[key].append({'count': count, 'section_title': sec, 'date': key}) tracker_list.append(temp_dict[key]) tracker_methods.append([temp.strftime("%d %b %Y"), count]) else: delta = relativedelta(months=+1) no_months = 0 tmp_date = start_date while tmp_date <= end_date: tmp_date += delta no_months += 1 for i in range(0, no_months, +1): temp = start_date + relativedelta(months=+i) month = temp.strftime("%m") year = temp.strftime("%Y") trackers = Tracker.objects.filter(course_id=13, type='page', submitted_date__year=year, submitted_date__month=month).values('section_title') \ .annotate(count=Count('section_title')).order_by('section_title') count = trackers.count() for meth in trackers: sec_title = json.loads(meth['section_title']) sec_title = sec_title['en'] meth['section_title'] = sec_title key = temp.strftime("%d %b %Y") meth['date'] = key if key in tracker_dict.keys(): tracker_dict[key].append(meth) else: tracker_dict[key] = [meth] tracker_list.append(tracker_dict[key]) if count == 0: temp_dict = {} key = temp.strftime("%d %b %Y") temp_dict[key] = [] for sec in sections_list: temp_dict[key].append({'count': count, 'section_title': sec, 'date': key}) tracker_list.append(temp_dict[key]) tracker_methods.append([temp.strftime("%d %b %Y"), count]) return render_to_response('oppia/viz/method-mixes.html', {'form': form, 'tracker_methods': tracker_list, 'sections_list': sections_list, 'interval': interval}, context_instance=RequestContext(request))
def course_activity_view(request): if not request.user.is_staff: raise Http404 course_activity = [] start_date = timezone.now() - datetime.timedelta(days=31) end_date = timezone.now() interval = 'days' if request.method == 'POST': form = DateRangeIntervalForm(request.POST) if form.is_valid(): start_date = form.cleaned_data.get("start_date") start_date = datetime.datetime.strptime(start_date, "%Y-%m-%d") end_date = form.cleaned_data.get("end_date") end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d") interval = form.cleaned_data.get("interval") else: data = {} data['start_date'] = start_date data['end_date'] = end_date data['interval'] = interval form = DateRangeIntervalForm(initial=data) if interval == 'days': no_days = (end_date - start_date).days + 1 for i in range(0, no_days, +1): temp = start_date + datetime.timedelta(days=i) day = temp.strftime("%d") month = temp.strftime("%m") year = temp.strftime("%Y") count = Tracker.objects.filter(user__is_staff=False, submitted_date__year=year, submitted_date__month=month, submitted_date__day=day).count() course_activity.append([temp.strftime("%d %b %Y"), count]) else: delta = relativedelta(months=+1) no_months = 0 tmp_date = start_date while tmp_date <= end_date: tmp_date += delta no_months += 1 for i in range(0, no_months, +1): temp = start_date + relativedelta(months=+i) month = temp.strftime("%m") year = temp.strftime("%Y") count = Tracker.objects.filter(user__is_staff=False, submitted_date__year=year, submitted_date__month=month).count() course_activity.append([temp.strftime("%b %Y"), count]) previous_course_activity = Tracker.objects.filter(user__is_staff=False, submitted_date__lt=start_date).count() last_month = timezone.now() - datetime.timedelta(days=31) hit_by_course = Tracker.objects.filter(user__is_staff=False, submitted_date__gte=last_month).exclude( course_id=None).values('course_id').annotate(total_hits=Count('id')).order_by('-total_hits') total_hits = Tracker.objects.filter(user__is_staff=False, submitted_date__gte=last_month).exclude( course_id=None).aggregate(total_hits=Count('id')) i = 0 hot_courses = [] other_course_activity = 0 for hbc in hit_by_course: if i < 10: hits_percent = float(hbc['total_hits'] * 100.0 / total_hits['total_hits']) course = Course.objects.get(id=hbc['course_id']) hot_courses.append({'course': course, 'hits_percent': hits_percent}) else: other_course_activity += hbc['total_hits'] i += 1 if i > 10: hits_percent = float(other_course_activity * 100.0 / total_hits['total_hits']) hot_courses.append({'course': _('Other'), 'hits_percent': hits_percent}) return render_to_response('oppia/viz/course-activity.html', {'form': form, 'course_activity': course_activity, 'previous_course_activity': previous_course_activity, 'interval': interval, 'hot_courses': hot_courses}, context_instance=RequestContext(request))
def home_view(request): activity = [] if request.user.is_authenticated(): # create profile if none exists (historical for very old users) try: up = request.user.userprofile except UserProfile.DoesNotExist: up = UserProfile() up.user= request.user up.save() dashboard_accessed.send(sender=None, request=request, data=None) # if user is student redirect to their scorecard if up.is_student_only(): return HttpResponseRedirect(reverse('profile_user_activity', args=[request.user.id])) # is user is teacher redirect to teacher home if up.is_teacher_only(): return HttpResponseRedirect(reverse('oppia_teacher_home')) start_date = timezone.now() - datetime.timedelta(days=31) end_date = timezone.now() interval = 'days' if request.method == 'POST': form = DateRangeIntervalForm(request.POST) if form.is_valid(): start_date = form.cleaned_data.get("start_date") start_date = datetime.datetime.strptime(start_date,"%Y-%m-%d") end_date = form.cleaned_data.get("end_date") end_date = datetime.datetime.strptime(end_date,"%Y-%m-%d") interval = form.cleaned_data.get("interval") else: data = {} data['start_date'] = start_date data['end_date'] = end_date data['interval'] = interval form = DateRangeIntervalForm(initial=data) if interval == 'days': no_days = (end_date-start_date).days + 1 trackers = Tracker.objects.filter(course__isnull=False, course__is_draft=False, user__is_staff=False, course__is_archived=False, tracker_date__gte=start_date, tracker_date__lte=end_date).extra({'activity_date':"date(tracker_date)"}).values('activity_date').annotate(count=Count('id')) for i in range(0,no_days,+1): temp = start_date + datetime.timedelta(days=i) count = next((dct['count'] for dct in trackers if dct['activity_date'] == temp.date()), 0) activity.append([temp.strftime("%d %b %Y"),count]) else: delta = relativedelta(months=+1) no_months = 0 tmp_date = start_date while tmp_date <= end_date: print tmp_date tmp_date += delta no_months += 1 for i in range(0,no_months,+1): temp = start_date + relativedelta(months=+i) month = temp.strftime("%m") year = temp.strftime("%Y") count = Tracker.objects.filter(course__isnull=False, course__is_draft=False, user__is_staff=False, course__is_archived=False, tracker_date__month=month, tracker_date__year=year).count() activity.append([temp.strftime("%b %Y"),count]) else: form = None leaderboard = Points.get_leaderboard(10) return render_to_response('oppia/home.html', {'form': form, 'activity_graph_data': activity, 'leaderboard': leaderboard}, context_instance=RequestContext(request))
def home_view(request): activity = [] leaderboard = None if request.user.is_authenticated(): # create profile if none exists (historical for very old users) try: up = request.user.userprofile except UserProfile.DoesNotExist: up = UserProfile() up.user = request.user up.save() dashboard_accessed.send(sender=None, request=request, data=None) # if user is student redirect to their scorecard if up.is_student_only(): return HttpResponseRedirect(reverse("profile_user_activity", args=[request.user.id])) # is user is teacher redirect to teacher home if up.is_teacher_only(): return HttpResponseRedirect(reverse("oppia_teacher_home")) start_date = timezone.now() - datetime.timedelta(days=31) end_date = timezone.now() interval = "days" if request.method == "POST": form = DateRangeIntervalForm(request.POST) if form.is_valid(): start_date = form.cleaned_data.get("start_date") start_date = datetime.datetime.strptime(start_date, "%Y-%m-%d") end_date = form.cleaned_data.get("end_date") end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d") interval = form.cleaned_data.get("interval") else: data = {} data["start_date"] = start_date data["end_date"] = end_date data["interval"] = interval form = DateRangeIntervalForm(initial=data) if interval == "days": no_days = (end_date - start_date).days + 1 tracker_stats = ( CourseDailyStats.objects.filter(day__gte=start_date, day__lte=end_date) .values("day") .annotate(count=Sum("total")) ) for i in range(0, no_days, +1): temp = start_date + datetime.timedelta(days=i) count = next((dct["count"] for dct in tracker_stats if dct["day"] == temp.date()), 0) activity.append([temp.strftime("%d %b %Y"), count]) else: delta = relativedelta(months=+1) no_months = 0 tmp_date = start_date while tmp_date <= end_date: print tmp_date tmp_date += delta no_months += 1 for i in range(0, no_months, +1): temp = start_date + relativedelta(months=+i) month = temp.strftime("%m") year = temp.strftime("%Y") count = ( CourseDailyStats.objects.filter(day__month=month, day__year=year) .aggregate(total=Sum("total")) .get("total", 0) ) activity.append([temp.strftime("%b %Y"), 0 if count is None else count]) print activity leaderboard = Points.get_leaderboard(10) else: form = None return render_to_response( "oppia/home.html", {"form": form, "activity_graph_data": activity, "leaderboard": leaderboard}, context_instance=RequestContext(request), )
def home_view(request): activity = [] if request.user.is_authenticated(): # create profile if none exists (historical for very old users) try: up = request.user.userprofile except UserProfile.DoesNotExist: up = UserProfile() up.user= request.user up.save() # if user is student redirect to their scorecard if up.is_student_only(): return HttpResponseRedirect(reverse('profile_user_activity', args=[request.user.id])) # is user is teacher redirect to teacher home if up.is_teacher_only(): return HttpResponseRedirect(reverse('oppia_teacher_home')) start_date = timezone.now() - datetime.timedelta(days=31) end_date = timezone.now() interval = 'days' if request.method == 'POST': form = DateRangeIntervalForm(request.POST) if form.is_valid(): start_date = form.cleaned_data.get("start_date") start_date = datetime.datetime.strptime(start_date,"%Y-%m-%d") end_date = form.cleaned_data.get("end_date") end_date = datetime.datetime.strptime(end_date,"%Y-%m-%d") interval = form.cleaned_data.get("interval") else: data = {} data['start_date'] = start_date data['end_date'] = end_date data['interval'] = interval form = DateRangeIntervalForm(initial=data) if interval == 'days': no_days = (end_date-start_date).days + 1 trackers = Tracker.objects.filter(course__isnull=False, course__is_draft=False, user__is_staff=False, course__is_archived=False, tracker_date__gte=start_date, tracker_date__lte=end_date).extra({'activity_date':"date(tracker_date)"}).values('activity_date').annotate(count=Count('id')) for i in range(0,no_days,+1): temp = start_date + datetime.timedelta(days=i) count = next((dct['count'] for dct in trackers if dct['activity_date'] == temp.date()), 0) activity.append([temp.strftime("%d %b %Y"),count]) else: delta = relativedelta(months=+1) no_months = 0 tmp_date = start_date while tmp_date <= end_date: print tmp_date tmp_date += delta no_months += 1 for i in range(0,no_months,+1): temp = start_date + relativedelta(months=+i) month = temp.strftime("%m") year = temp.strftime("%Y") count = Tracker.objects.filter(course__isnull=False, course__is_draft=False, user__is_staff=False, course__is_archived=False, tracker_date__month=month, tracker_date__year=year).count() activity.append([temp.strftime("%b %Y"),count]) else: form = None leaderboard = Points.get_leaderboard(10) return render_to_response('oppia/home.html', {'form': form, 'activity_graph_data': activity, 'leaderboard': leaderboard}, context_instance=RequestContext(request))