def test_get_google_analytics_client_id(self): """ Test that method return's the GA clientId. """ expected_client_id = get_google_analytics_client_id(None) self.assertIsNone(expected_client_id) ga_client_id = 'test-client-id' request_factory = RequestFactory() request_factory.cookies['_ga'] = 'GA1.2.{}'.format(ga_client_id) request = request_factory.get('/') expected_client_id = get_google_analytics_client_id(request) self.assertEqual(ga_client_id, expected_client_id)
def process_request(self, request): user = request.user if user.is_authenticated(): tracking_context = user.tracking_context or {} old_client_id = tracking_context.get('ga_client_id') ga_client_id = get_google_analytics_client_id(request) if ga_client_id and ga_client_id != old_client_id: tracking_context['ga_client_id'] = ga_client_id user.tracking_context = tracking_context user.save()
def process_request(self, request): user = request.user if user.is_authenticated(): save_user = False tracking_context = user.tracking_context or {} # Check for the GA client id old_client_id = tracking_context.get('ga_client_id') ga_client_id = get_google_analytics_client_id(request) if ga_client_id and ga_client_id != old_client_id: tracking_context['ga_client_id'] = ga_client_id user.tracking_context = tracking_context save_user = True # The LMS user_id may already be present for the user. It may have been added from the jwt (see the # EDX_DRF_EXTENSIONS.JWT_PAYLOAD_USER_ATTRIBUTE_MAPPING settings) or by a previous call to this middleware. # If the id is not present, try to add it. if not user.lms_user_id: # Check for the lms_user_id in social auth lms_user_id_social_auth = self._get_lms_user_id_from_social_auth( user) if lms_user_id_social_auth: user.lms_user_id = lms_user_id_social_auth save_user = True logger.info( u'Saving lms_user_id from social auth for user %s. Request path: %s, referrer: %s', user.id, request.get_full_path(), request.META.get('HTTP_REFERER')) else: # TODO: Remove this once we can successfully get the id from social auth and the db. See REVMI-258 # Check for the lms_user_id in the tracking context lms_user_id_tracking_context = tracking_context.get( 'lms_user_id') if lms_user_id_tracking_context: user.lms_user_id = lms_user_id_tracking_context save_user = True logger.info( u'Saving lms_user_id from tracking context for user %s. Request path: %s, ' u'referrer: %s', user.id, request.get_full_path(), request.META.get('HTTP_REFERER')) if not user.lms_user_id: # TODO: Change this to an error once we can successfully get the id from social auth and the db. # See REVMI-249 and REVMI-269 logger.info( u'Could not find lms_user_id for user %s. Request path: %s, referrer: %s', user.id, request.get_full_path(), request.META.get('HTTP_REFERER')) if save_user: user.save()
def process_request(self, request): user = request.user if user.is_authenticated(): tracking_context = user.tracking_context or {} # Check for the GA client id old_client_id = tracking_context.get('ga_client_id') ga_client_id = get_google_analytics_client_id(request) if ga_client_id and ga_client_id != old_client_id: tracking_context['ga_client_id'] = ga_client_id user.tracking_context = tracking_context user.save() # If the user does not already have an LMS user id, add it called_from = u'middleware with request path: {request}, referrer: {referrer}'.format( request=request.get_full_path(), referrer=request.META.get('HTTP_REFERER')) user.add_lms_user_id('ecommerce_missing_lms_user_id_middleware', called_from)
def process_request(self, request): user = request.user if user.is_authenticated(): save_user = False tracking_context = user.tracking_context or {} # Check for the GA client id old_client_id = tracking_context.get('ga_client_id') ga_client_id = get_google_analytics_client_id(request) if ga_client_id and ga_client_id != old_client_id: tracking_context['ga_client_id'] = ga_client_id user.tracking_context = tracking_context save_user = True # The LMS user_id may already be present for the user. It may have been added from the jwt (see the # EDX_DRF_EXTENSIONS.JWT_PAYLOAD_USER_ATTRIBUTE_MAPPING settings) or by a previous call to this middleware. # If the id is not present, try to add it. if not user.lms_user_id: # Check for the lms_user_id in social auth lms_user_id_social_auth, social_auth_id = self._get_lms_user_id_from_social_auth( user) if lms_user_id_social_auth: user.lms_user_id = lms_user_id_social_auth save_user = True logger.info( u'Saving lms_user_id from social auth with id %s for user %s. Request path: %s, ' u'referrer: %s', social_auth_id, user.id, request.get_full_path(), request.META.get('HTTP_REFERER')) else: monitoring_utils.set_custom_metric( 'ecommerce_missing_lms_user_id_middleware', user.id) logger.error( u'Could not find lms_user_id for user %s. Request path: %s, referrer: %s', user.id, request.get_full_path(), request.META.get('HTTP_REFERER')) if save_user: user.save()