Exemple #1
0
    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)
Exemple #2
0
    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()
Exemple #3
0
    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()
Exemple #4
0
    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()