diff --git a/common/djangoapps/student/management/commands/create_user.py b/common/djangoapps/student/management/commands/create_user.py index bf4c084dca52..5f3f3b486e6b 100644 --- a/common/djangoapps/student/management/commands/create_user.py +++ b/common/djangoapps/student/management/commands/create_user.py @@ -3,6 +3,7 @@ from student.models import CourseEnrollment, Registration from student.views import _do_create_account from django.contrib.auth.models import User +from eventtracking import tracker class Command(BaseCommand): @@ -64,25 +65,29 @@ def handle(self, *args, **options): if not name: name = options['email'].split('@')[0] - post_data = { - 'username': username, - 'email': options['email'], - 'password': options['password'], - 'name': name, - 'honor_code': u'true', - 'terms_of_service': u'true', - } - create_account = _do_create_account(post_data) - if isinstance(create_account, tuple): - user = create_account[0] - if options['staff']: - user.is_staff = True - user.save() - reg = Registration.objects.get(user=user) - reg.activate() - reg.save() - else: - print create_account - user = User.objects.get(email=options['email']) - if options['course']: - CourseEnrollment.enroll(user, options['course'], mode=options['mode']) + CONTEXT_NAME = 'edx.mgmt.command' + context = {'command': 'create_user'} + with tracker.get_tracker().context(CONTEXT_NAME, context): + + post_data = { + 'username': username, + 'email': options['email'], + 'password': options['password'], + 'name': name, + 'honor_code': u'true', + 'terms_of_service': u'true', + } + create_account = _do_create_account(post_data) + if isinstance(create_account, tuple): + user = create_account[0] + if options['staff']: + user.is_staff = True + user.save() + reg = Registration.objects.get(user=user) + reg.activate() + reg.save() + else: + print create_account + user = User.objects.get(email=options['email']) + if options['course']: + CourseEnrollment.enroll(user, options['course'], mode=options['mode']) diff --git a/common/djangoapps/track/views.py b/common/djangoapps/track/views.py index ec052323957d..48ae896c17e7 100644 --- a/common/djangoapps/track/views.py +++ b/common/djangoapps/track/views.py @@ -68,31 +68,49 @@ def user_track(request): def server_track(request, event_type, event, page=None): - """Log events related to server requests.""" - try: - username = request.user.username - except: - username = "anonymous" - - try: - agent = request.META['HTTP_USER_AGENT'] - except: - agent = '' + """ + Log events related to server requests. + Handle the situation where the request may be NULL, as may happen with management commands. + """ + username = 'anonymous' + agent = '' + host = '' + ip = '' + if request is not None: + try: + username = request.user.username + except: + pass + if hasattr(request, META): + try: + agent = request.META['HTTP_USER_AGENT'] + except: + pass + try: + host = request.META['SERVER_NAME'] + except: + pass + try: + ip = request.META['REMOTE_ADDR'] + except: + pass + + # define output: event = { "username": username, - "ip": request.META['REMOTE_ADDR'], + "ip": ip, "event_source": "server", "event_type": event_type, "event": event, "agent": agent, "page": page, "time": datetime.datetime.now(UTC), - "host": request.META['SERVER_NAME'], + "host": host, "context": eventtracker.get_tracker().resolve_context(), } - if event_type.startswith("/event_logs") and request.user.is_staff: + if event_type.startswith("/event_logs") and request and request.user.is_staff: return # don't log log_event(event)