Ejemplo n.º 1
0
def register_event(page):
	tracker = Tracker(GA_TRACKER, DOMAIN)
	visitor = Visitor()
	visitor.extract_from_server_meta(request.environ)
	session = Session()
	page = Page(page)
	tracker.track_pageview(page, session, visitor)
Ejemplo n.º 2
0
    def test_request(self):
        from pyga.requests import Tracker, Visitor, Session, Page
        from mock import Mock

        mocked = six.moves.urllib.request.urlopen = Mock()

        meta = dict(
            REMOTE_ADDR='134.321.0.1',
            HTTP_USER_AGENT='Test User Agent 1.0',
            HTTP_ACCEPT_LANGUAGE='en-US,en;q=0.8,ru;q=0.6',
        )
        tracker = Tracker('UA-0000-0000', 'test.com')
        visitor = Visitor()
        visitor.extract_from_server_meta(meta)
        self.assertEqual(visitor.ip_address, '134.321.0.1')
        self.assertEqual(visitor.locale, 'en_US')
        self.assertEqual(visitor.user_agent, 'Test User Agent 1.0')
        session = Session()
        page = Page('/test_path')
        tracker.track_pageview(page, session, visitor)
        (request, ), _ = mocked.call_args_list.pop()
        self.assertEqual(request.headers.get('X-forwarded-for'), '134.321.0.1')
        self.assertEqual(request.headers.get('User-agent'), 'Test User Agent 1.0')

        # Assert that &ua and &uip are passed along, and that &uip is properly
        # anonymized.
        qs = six.moves.urllib.parse.urlparse(request.get_full_url()).query
        params = six.moves.urllib.parse.parse_qs(qs)
        self.assertEqual(params['uip'][0], '134.321.0.0')
        self.assertEqual(params['ua'][0], 'Test User Agent 1.0')
Ejemplo n.º 3
0
    def test_request(self, mocked):
        from pyga.requests import Tracker, Visitor, Session, Page

        meta = dict(
            REMOTE_ADDR="134.321.0.1",
            HTTP_USER_AGENT="Test User Agent 1.0",
            HTTP_ACCEPT_LANGUAGE="en-US,en;q=0.8,ru;q=0.6",
        )
        tracker = Tracker("UA-0000-0000", "test.com")
        visitor = Visitor()
        visitor.extract_from_server_meta(meta)
        self.assertEqual(visitor.ip_address, "134.321.0.1")
        self.assertEqual(visitor.locale, "en_US")
        self.assertEqual(visitor.user_agent, "Test User Agent 1.0")
        session = Session()
        page = Page("/test_path")
        tracker.track_pageview(page, session, visitor)
        (request, ), _ = mocked.call_args_list.pop()
        self.assertEqual(request.headers.get("X-forwarded-for"), "134.321.0.1")
        self.assertEqual(request.headers.get("User-agent"),
                         "Test User Agent 1.0")

        # Assert that &ua and &uip are passed along, and that &uip is properly
        # anonymized.
        qs = urlparse(request.get_full_url()).query
        params = parse_qs(qs)
        self.assertEqual(params["uip"][0], "134.321.0.0")
        self.assertEqual(params["ua"][0], "Test User Agent 1.0")
Ejemplo n.º 4
0
Archivo: ga.py Proyecto: kra3/py-ga-mob
    def test_request(self, mocked):
        from pyga.requests import Tracker, Visitor, Session, Page

        meta = dict(
            REMOTE_ADDR="134.321.0.1",
            HTTP_USER_AGENT="Test User Agent 1.0",
            HTTP_ACCEPT_LANGUAGE="en-US,en;q=0.8,ru;q=0.6",
        )
        tracker = Tracker("UA-0000-0000", "test.com")
        visitor = Visitor()
        visitor.extract_from_server_meta(meta)
        self.assertEqual(visitor.ip_address, "134.321.0.1")
        self.assertEqual(visitor.locale, "en_US")
        self.assertEqual(visitor.user_agent, "Test User Agent 1.0")
        session = Session()
        page = Page("/test_path")
        tracker.track_pageview(page, session, visitor)
        (request,), _ = mocked.call_args_list.pop()
        self.assertEqual(request.headers.get("X-forwarded-for"), "134.321.0.1")
        self.assertEqual(
            request.headers.get("User-agent"), "Test User Agent 1.0"
        )

        # Assert that &ua and &uip are passed along, and that &uip is properly
        # anonymized.
        qs = urlparse(request.get_full_url()).query
        params = parse_qs(qs)
        self.assertEqual(params["uip"][0], "134.321.0.0")
        self.assertEqual(params["ua"][0], "Test User Agent 1.0")
Ejemplo n.º 5
0
    def test_request(self):
        from pyga.requests import Tracker, Visitor, Session, Page
        from mock import Mock
        import urllib2

        mocked = urllib2.urlopen = Mock()

        meta = dict(
            REMOTE_ADDR='134.321.0.1',
            HTTP_USER_AGENT='Test User Agent 1.0',
            HTTP_ACCEPT_LANGUAGE='en-US,en;q=0.8,ru;q=0.6',
        )
        tracker = Tracker('UA-0000-0000', 'test.com')
        visitor = Visitor()
        visitor.extract_from_server_meta(meta)
        self.assertEqual(visitor.ip_address, '134.321.0.1')
        self.assertEqual(visitor.locale, 'en_US')
        self.assertEqual(visitor.user_agent, 'Test User Agent 1.0')
        session = Session()
        page = Page('/test_path')
        tracker.track_pageview(page, session, visitor)
        (request, ), _ = mocked.call_args_list.pop()
        self.assertEqual(request.headers.get('X-forwarded-for'), '134.321.0.1')
        self.assertEqual(request.headers.get('User-agent'),
                         'Test User Agent 1.0')
Ejemplo n.º 6
0
    def test_request(self):
        from pyga.requests import Tracker, Visitor, Session, Page
        from mock import Mock
        from urlparse import urlparse, parse_qs
        import urllib2

        mocked = urllib2.urlopen = Mock()

        meta = dict(
            REMOTE_ADDR='134.321.0.1',
            HTTP_USER_AGENT='Test User Agent 1.0',
            HTTP_ACCEPT_LANGUAGE='en-US,en;q=0.8,ru;q=0.6',
        )
        tracker = Tracker('UA-0000-0000', 'test.com')
        visitor = Visitor()
        visitor.extract_from_server_meta(meta)
        self.assertEqual(visitor.ip_address, '134.321.0.1')
        self.assertEqual(visitor.locale, 'en_US')
        self.assertEqual(visitor.user_agent, 'Test User Agent 1.0')
        session = Session()
        page = Page('/test_path')
        tracker.track_pageview(page, session, visitor)
        (request, ), _ = mocked.call_args_list.pop()
        self.assertEqual(request.headers.get('X-forwarded-for'), '134.321.0.1')
        self.assertEqual(request.headers.get('User-agent'), 'Test User Agent 1.0')

        # Assert that &ua and &uip are passed along, and that &uip is properly
        # anonymized.
        qs = urlparse(request.get_full_url()).query
        params = parse_qs(qs)
        self.assertEqual(params['uip'][0], '134.321.0.0')
        self.assertEqual(params['ua'][0], 'Test User Agent 1.0')
Ejemplo n.º 7
0
Archivo: ga.py Proyecto: klen/adrest
 def get(self, request, path=None, **resources):
     """ Proxy request to GA. """
     tracker = Tracker(self._meta.account_id, self._meta.domain or request.META.get("SERVER_NAME"))
     visitor = Visitor()
     visitor.extract_from_server_meta(request.META)
     session = Session()
     page = Page(path)
     tracker.track_pageview(page, session, visitor)
Ejemplo n.º 8
0
Archivo: ga.py Proyecto: salvopr/adrest
 def get(self, request, path=None, **resources):
     """ Proxy request to GA. """
     tracker = Tracker(self._meta.account_id, self._meta.domain
                       or request.META.get('SERVER_NAME'))
     visitor = Visitor()
     visitor.extract_from_server_meta(request.META)
     session = Session()
     page = Page(path)
     tracker.track_pageview(page, session, visitor)
 def send(self, identity, properties, aliases, events, request_meta):
     host_name = (request_meta.get('HTTP_HOST') or
                  Site.objects.get_current().domain)
     tracker = Tracker(self.web_id, host_name)
     visitor = Visitor()
     visitor.unique_id = abs(hash(identity)) >> 33
     visitor.extract_from_server_meta(request_meta)
     session = Session()
     for event_name, event_properties in events:
         event = Event(category=self.event_category, action=event_name)
         tracker.track_event(event, session, visitor)
Ejemplo n.º 10
0
    def ga_track(self, settings, event={}):
        _req_list = []
        no_tracking = self.get_argument('no_tracking', None)
        is_prod = settings.ga_is_prod
        if not no_tracking and is_prod and settings.ga_account:
            _req = self.request
            remote_ip = _req.headers.get("X-Real-Ip",
                        _req.headers.get("X-Forwarded-For",
                        _req.remote_ip))
            user_agent = _req.headers.get("User-Agent", None)
            visitor = Visitor()
            visitor.ip_address = remote_ip
            visitor.user_agent = user_agent
            #get visitor.locale
            visitor.extract_from_server_meta(
                {"HTTP_ACCEPT_LANGUAGE": _req.headers.get("Accept-Language", None)}
            )
            session = Session()
            page = Page(_req.path)
            tracker = Tracker(settings.ga_account, settings.ga_tracker_url)
            # tracker.track_pageview(page, session, visitor)  #this is non-async request
            pvr = PageViewRequest(config=tracker.config,
                                  tracker=tracker,
                                  visitor=visitor,
                                  session=session,
                                  page=page)
            r = pvr.build_http_request()
            _req_list.append(HTTPRequest(r.get_full_url(),
                                         "POST" if (r.data) else "GET",
                                         headers=r.headers,
                                         body=r.data))
            if event:
                evt = Event(**event)
                #tracker.track_event(evt, session, visitor)  #this is non-async request
                er = EventRequest(config=tracker.config,
                                  tracker=tracker,
                                  visitor=visitor,
                                  session=session,
                                  event=evt)
                r = er.build_http_request()
                _req_list.append(HTTPRequest(r.get_full_url(),
                                             "POST" if (r.data) else "GET",
                                             headers=r.headers,
                                             body=r.data))

            #now send actual async requests
            http_client = AsyncHTTPClient()
            for _req in _req_list:
                http_client.fetch(_req)
Ejemplo n.º 11
0
    def ga_track(self, event={}):
        _req_list = []
        no_tracking = self.get_argument('no_tracking', None)
        is_prod = getattr(config, 'RUN_IN_PROD', False)
        if not no_tracking and is_prod and hasattr(config, "GA_ACCOUNT"):
            _req = self.request
            remote_ip = _req.headers.get("X-Real-Ip",
                        _req.headers.get("X-Forwarded-For",
                        _req.remote_ip))
            user_agent = _req.headers.get("User-Agent", None)
            visitor = Visitor()
            visitor.ip_address = remote_ip
            visitor.user_agent = user_agent
            #get visitor.locale
            visitor.extract_from_server_meta(
                {"HTTP_ACCEPT_LANGUAGE": _req.headers.get("Accept-Language", None)}
            )
            session = Session()
            page = Page(_req.path)
            tracker = Tracker(config.GA_ACCOUNT, 'MyVariant.info')
            # tracker.track_pageview(page, session, visitor)  #this is non-async request
            pvr = PageViewRequest(config=tracker.config,
                                  tracker=tracker,
                                  visitor=visitor,
                                  session=session,
                                  page=page)
            r = pvr.build_http_request()
            _req_list.append(HTTPRequest(r.get_full_url(),
                                         "POST" if (r.data) else "GET",
                                         headers=r.headers,
                                         body=r.data))
            if event:
                evt = Event(**event)
                #tracker.track_event(evt, session, visitor)  #this is non-async request
                er = EventRequest(config=tracker.config,
                                  tracker=tracker,
                                  visitor=visitor,
                                  session=session,
                                  event=evt)
                r = er.build_http_request()
                _req_list.append(HTTPRequest(r.get_full_url(),
                                             "POST" if (r.data) else "GET",
                                             headers=r.headers,
                                             body=r.data))

            #now send actual async requests
            http_client = AsyncHTTPClient()
            for _req in _req_list:
                http_client.fetch(_req)
Ejemplo n.º 12
0
def on_order_paid(order, payment, request, **kwargs):
    if not request:
        return

    ga_data = order.data.get("google_analytics", {})
    tracker = Tracker(settings.GOOGLE_ANALYTICS_ID, request.get_host())

    # create visitor
    visitor = Visitor()
    try:
        visitor.extract_from_utma(ga_data.get("utma", ""))
    except ValueError:
        return  # utma cookie value is invalid
    visitor.extract_from_server_meta(ga_data.get("meta", {}))

    # create session
    session = Session()
    try:
        session.extract_from_utmb(ga_data.get("utmb", ""))
    except ValueError:
        return  # utmb cookie value is invalid

    # create transaction
    transaction = Transaction()
    transaction.order_id = order.order_id
    transaction.total = order.subtotal
    transaction.tax = order.tax
    transaction.shipping = order.shipping
    transaction.city = order.billing_city.encode("utf8")
    transaction.country = ("%s" % order.billing_country).encode("utf8")
    transaction.currency = order.currency
    for item in order.items.all():
        i = Item()
        i.sku = item.sku
        i.name = item.name.encode("utf8")
        i.price = item.unit_price
        i.quantity = item.quantity
        transaction.add_item(i)

    # tracker.setcurrencyCode
    tracker.track_transaction(transaction, session, visitor)

    order.data["google_analytics"]["tracked"] = now()
    order.save()
Ejemplo n.º 13
0
    def test_request(self):
        from pyga.requests import Tracker, Visitor, Session, Page
        from mock import Mock
        import urllib2

        mocked = urllib2.urlopen = Mock()

        meta = dict(
            REMOTE_ADDR='134.321.0.1',
            HTTP_USER_AGENT='Test User Agent 1.0',
            HTTP_ACCEPT_LANGUAGE='en-US,en;q=0.8,ru;q=0.6',
        )
        tracker = Tracker('UA-0000-0000', 'test.com')
        visitor = Visitor()
        visitor.extract_from_server_meta(meta)
        self.assertEqual(visitor.ip_address, '134.321.0.1')
        self.assertEqual(visitor.locale, 'en_US')
        self.assertEqual(visitor.user_agent, 'Test User Agent 1.0')
        session = Session()
        page = Page('/test_path')
        tracker.track_pageview(page, session, visitor)
        (request, ), _ = mocked.call_args_list.pop()
        self.assertEqual(request.headers.get('X-forwarded-for'), '134.321.0.1')
        self.assertEqual(request.headers.get('User-agent'), 'Test User Agent 1.0')