diff --git a/common/djangoapps/student/models.py b/common/djangoapps/student/models.py index c4fc45950d..e5017dab23 100644 --- a/common/djangoapps/student/models.py +++ b/common/djangoapps/student/models.py @@ -18,6 +18,7 @@ import logging from pytz import UTC import uuid from collections import defaultdict +from dogapi import dog_stats_api from django.conf import settings from django.contrib.auth.models import User @@ -36,6 +37,8 @@ from track.views import server_track from eventtracking import tracker from importlib import import_module +from xmodule.modulestore import Location + from course_modes.models import CourseMode import lms.lib.comment_client as cc from util.query import use_read_replica_if_available @@ -496,12 +499,31 @@ class CourseEnrollment(models.Model): if activation_changed or mode_changed: self.save() if activation_changed: + course_id_dict = Location.parse_course_id(self.course_id) if self.is_active: self.emit_event(EVENT_NAME_ENROLLMENT_ACTIVATED) + + dog_stats_api.increment( + "common.student.enrollment", + tags=[u"org:{org}".format(**course_id_dict), + u"course:{course}".format(**course_id_dict), + u"run:{name}".format(**course_id_dict), + u"mode:{}".format(self.mode)] + ) + else: unenroll_done.send(sender=None, course_enrollment=self) + self.emit_event(EVENT_NAME_ENROLLMENT_DEACTIVATED) + dog_stats_api.increment( + "common.student.unenrollment", + tags=[u"org:{org}".format(**course_id_dict), + u"course:{course}".format(**course_id_dict), + u"run:{name}".format(**course_id_dict), + u"mode:{}".format(self.mode)] + ) + def emit_event(self, event_name): """ Emits an event to explicitly track course enrollment and unenrollment. diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index 54f3e2bfb3..3497e52d1e 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -609,15 +609,6 @@ def change_enrollment(request): ) current_mode = available_modes[0] - - course_id_dict = Location.parse_course_id(course_id) - dog_stats_api.increment( - "common.student.enrollment", - tags=[u"org:{org}".format(**course_id_dict), - u"course:{course}".format(**course_id_dict), - u"run:{name}".format(**course_id_dict)] - ) - CourseEnrollment.enroll(user, course.id, mode=current_mode.slug) return HttpResponse() @@ -639,13 +630,6 @@ def change_enrollment(request): if not CourseEnrollment.is_enrolled(user, course_id): return HttpResponseBadRequest(_("You are not enrolled in this course")) CourseEnrollment.unenroll(user, course_id) - course_id_dict = Location.parse_course_id(course_id) - dog_stats_api.increment( - "common.student.unenrollment", - tags=[u"org:{org}".format(**course_id_dict), - u"course:{course}".format(**course_id_dict), - u"run:{name}".format(**course_id_dict)] - ) return HttpResponse() else: return HttpResponseBadRequest(_("Enrollment action is invalid"))