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 = [] 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))