def get_course_history_metric(site, course_id, func, date_for, months_back): """Retieves current_month and history metric data for a course and time period This is a convenience function to reduce duplicate code :param course_id: The course identifier for the course we want data :param func: The metric function to retrieve a metric for the specified course and date range :param date_for: The date to determine the current month :param months_back: How many months back to retrieve data :returns: a dict with the current month metric and list of metrics for previous months """ # wrapper_func = lambda start_date, end_date: func( # start_date=start_date, # end_date=end_date, # course_id=course_id) # def wrapper_func(start_date, end_date): # start_date=start_date, # end_date=end_date, # course_id=course_id return get_monthly_history_metric( func=lambda site, start_date, end_date: func( site=site, start_date=start_date, end_date=end_date, # site=site, course_id=course_id), site=site, date_for=date_for, months_back=months_back, )
def site_courses(self, request): site = django.contrib.sites.shortcuts.get_current_site(request) date_for = datetime.utcnow().date() months_back = 6 site_courses = metrics.get_monthly_history_metric( func=metrics.get_total_site_courses_for_time_period, site=site, date_for=date_for, months_back=months_back, ) data = dict(site_courses=site_courses) return Response(data)
def new_users(self, request): site = django.contrib.sites.shortcuts.get_current_site(self.request) date_for = datetime.utcnow().date() months_back = 6 new_users = metrics.get_monthly_history_metric( func=metrics.get_total_site_users_joined_for_time_period, site=site, date_for=date_for, months_back=months_back, ) data = dict(new_users=new_users) return Response(data)
def course_enrollments(self, request): site = figures.sites.get_requested_site(request) date_for = datetime.utcnow().date() months_back = 6 course_enrollments = metrics.get_monthly_history_metric( func=metrics.get_total_enrollments_for_time_period, site=site, date_for=date_for, months_back=months_back, ) data = dict(course_enrollments=course_enrollments) return Response(data)
def registered_users(self, request): site = figures.sites.get_requested_site(request) date_for = datetime.utcnow().date() months_back = 6 registered_users = metrics.get_monthly_history_metric( func=metrics.get_total_site_users_for_time_period, site=site, date_for=date_for, months_back=months_back, ) data = dict(registered_users=registered_users) return Response(data)
def new_users(self, request): """ TODO: Rename the metrics module function to "new_users" to match this """ site = django.contrib.sites.shortcuts.get_current_site(request) date_for = datetime.utcnow().date() months_back = 6 new_users = metrics.get_monthly_history_metric( func=metrics.get_total_site_users_joined_for_time_period, site=site, date_for=date_for, months_back=months_back, ) data = dict(new_users=new_users) return Response(data)