Exemplo n.º 1
0
def home_view(request):

    if request.user.is_authenticated:

        # create profile if none exists (for first admin user login and historical for very old users)
        try:
            request.user.userprofile
        except UserProfile.DoesNotExist:
            up = UserProfile()
            up.user = request.user
            up.save()

        up = request.user.userprofile
        # 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_index'))

        # admin/staff view
        form, activity = home_view_admin_authenticated(request)
        leaderboard = Points.get_leaderboard(10)
    else:
        activity = []
        leaderboard = None
        form = None

    return render(request, 'oppia/home.html',
                  {'form': form,
                   'activity_graph_data': activity,
                   'leaderboard': leaderboard})
Exemplo n.º 2
0
    def process(self, request):

        if request.user.is_authenticated:

            # create profile if none exists (for first admin user login and
            # historical for very old users)
            try:
                request.user.userprofile
            except UserProfile.DoesNotExist:
                up = UserProfile()
                up.user = request.user
                up.save()

            up = request.user.userprofile
            # 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_index'))

            if permissions.is_manager_only(request.user):
                return HttpResponseRedirect(reverse('oppia:manager_index'))

            # admin/staff view
            form, activity = self.admin_authenticated(request)
            leaderboard = Points.get_leaderboard(
                constants.LEADERBOARD_HOMEPAGE_RESULTS_PER_PAGE)
        else:
            activity = []
            leaderboard = None
            form = None

        return render(
            request, 'oppia/home.html', {
                'form': form,
                'activity_graph_data': activity,
                'leaderboard': leaderboard
            })
Exemplo n.º 3
0
    def dispatch(self, request, *args, **kwargs):
        if request.user.is_authenticated:
            # create profile if none exists (for first admin user login and
            # historical for very old users)
            try:
                request.user.userprofile
            except UserProfile.DoesNotExist:
                up = UserProfile()
                up.user = request.user
                up.save()

            up = request.user.userprofile
            # 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_index'))

            if permissions.is_manager_only(request.user):
                return HttpResponseRedirect(reverse('oppia:manager_index'))

        return super().get(request, *args, **kwargs)
Exemplo n.º 4
0
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
    })
Exemplo n.º 5
0
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})