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