Esempio n. 1
0
    def post(self):
        span_in_days = int(self.request.get('span_in_days'))
        query = InstallMetric.all()
        query.order('-installed_at')
        cursor = self.request.get('cursor')
        if cursor != None:
            query.with_cursor(cursor)

        install_metrics = query.fetch(25)

        # There's one kvaluemetric per day, so find all `span_in_days` of them
        for install_metric in install_metrics:
            for kvalue_day in range(0, span_in_days):
                date = (install_metric.installed_at + datetime.timedelta(days=kvalue_day)).date()
                k_value_metric = KValueMetric.gql("WHERE date = :1 AND span_in_days = :2", date, span_in_days).get()
                if k_value_metric == None:
                    k_value_metric = KValueMetric(span_in_days = span_in_days, date = date)
                
                if install_metric.installed_via_newsfeed == True:
                    if k_value_metric.viral_signups == None:
                        k_value_metric.viral_signups = 0
                    k_value_metric.viral_signups += 1
                
                if k_value_metric.total_signups == None:
                    k_value_metric.total_signups = 0
                k_value_metric.total_signups +=1
                k_value_metric.put()

        self.response.out.write(simplejson.dumps({'status': 'ok', 'cursor': str(query.cursor()), 'count': len(install_metrics) }))
Esempio n. 2
0
    def post(self):
        query = InstallMetric.all()
        query.order('-installed_at')
        cursor = self.request.get('cursor')
        if cursor != None:
            query.with_cursor(cursor)

        install_metrics = query.fetch(25)

        for install_metric in install_metrics:
            post_install_activity_metric = PostInstallActivityMetric.gql("WHERE user = :1", install_metric.user).get()
            if post_install_activity_metric == None:
                post_install_activity_metric = PostInstallActivityMetric(
                    fb_user_id = install_metric.user.fb_user_id,
                    user = install_metric.user,
                    installed_at = install_metric.installed_at
                )
            else:    
                post_install_activity_metric.fb_user_id = install_metric.user.fb_user_id
                post_install_activity_metric.user = install_metric.user
                post_install_activity_metric.installed_at = install_metric.installed_at
            
            for day in [1,2,3,4,5,6,7]:
                day_start = install_metric.installed_at + datetime.timedelta(days=day)
                day_end = install_metric.installed_at + datetime.timedelta(days=(day+1))
                page_view_in_day = PageView.gql(
                    "WHERE user = :1 AND created_at >= :2 AND created_at < :3", 
                    install_metric.user, day_start, day_end).get()
                
                if page_view_in_day != None:
                    setattr(post_install_activity_metric, "active_day_%s" % day, True)

            post_install_activity_metric.put()
        
        self.response.out.write(simplejson.dumps({'status': 'ok', 'cursor': str(query.cursor()), 'count': len(install_metrics) }))
Esempio n. 3
0
 def get(self):
     last_metric_at = InstallMetric.gql("ORDER BY updated_at DESC").get()
     if last_metric_at == None:
         last_metric_at = "[Never]"
     else:
         last_metric_at = last_metric_at.updated_at
     
     h.output(self, '<html><head><link href="/public/css/admin/admin.css" type="text/css" rel="stylesheet" /></head><body><div id="loading-msg">Loading...</div><div id="auto-fetch-install-metrics"></div><div>Install Metric Re-Calculation Status: <span id="status">Last Run at: '+str(last_metric_at)+'</span> <a id="calculate-install-metrics-button" href="#">RE-CALCULATE NOW!</a></div><div>Total Users: <span id="total-users">...</span></div><div>Users From Ads: <span id="total-from-ads">...</span></div><div>Users From Newsfeeds: <span id="total-from-newsfeeds">...</span></div><div>Users From Unknown: <span id="total-from-unknown">...</span></div><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script><script src="/public/js/admin/install-metrics.js" type="text/javascript"></script></body></html>')
Esempio n. 4
0
    def post(self):
        query = InstallMetric.all()
        query.order('-updated_at')
        cursor = self.request.get('cursor')
        if cursor != None:
            query.with_cursor(cursor)

        install_metrics = query.fetch(1000)
        total_users = 0
        total_from_ads = 0
        total_from_newsfeeds = 0
        total_from_unknown = 0
        for install_metric in install_metrics:
            total_users += 1
            if install_metric.installed_via_ad == True:
                total_from_ads += 1
            elif install_metric.installed_via_newsfeed == True:
                total_from_newsfeeds += 1
            elif install_metric.installed_via_unknown == True:
                total_from_unknown += 1
        
        self.response.out.write(simplejson.dumps({'status': 'ok', 'cursor': str(query.cursor()), 'total_users': total_users, 'total_from_ads': total_from_ads, 'total_from_newsfeeds': total_from_newsfeeds, 'total_from_unknown': total_from_unknown, 'count': len(install_metrics) }))
Esempio n. 5
0
    def post(self):
        query = User.all()
        query.order('-created_at')
        cursor = self.request.get('cursor')
        if cursor != None:
            query.with_cursor(cursor)

        users = query.fetch(25)

        for user in users:
            page_view_with_user = PageView.gql("WHERE user = :1 ORDER BY created_at ASC", user).get() 
            
            if page_view_with_user == None:
                logging.error("Couldn't find PageView for User(key=%s,fb_user_id=%s)" % (str(user.key()), str(user.fb_user_id)))
                page_view_with_user = PageView() # Fake it till we make it
            
            if page_view_with_user.session_id != None and len(page_view_with_user.session_id) > 0:
                page_view_with_session_id = PageView.gql("WHERE session_id = :1 ORDER BY created_at ASC", page_view_with_user.session_id).get()
            else:
                page_view_with_session_id = page_view_with_user
            
            referring_page_view = page_view_with_session_id
            if not referring_page_view.is_saved():
                referring_page_view = None
            
            installed_at = user.created_at
            if page_view_with_session_id.referrer == None or len(page_view_with_session_id.referrer) < 10:
                url_to_parse = page_view_with_session_id.url
            else:
                url_to_parse = page_view_with_session_id.referrer
                
            if url_to_parse == None:
                url_to_parse = ''
            
            parsed_referral_url = urlparse(url_to_parse)
            params = cgi.parse_qs(parsed_referral_url.query)
            
            if 'suid' in params and params['suid'] != None and len(params['suid'][0]) > 0:
                installed_via_newsfeed = True
                referring_user = User.gql("WHERE fb_user_id = :1", params['suid'][0]).get()
                newsfeed_search_term = '|'.join(params['q'])
                newsfeed_verb = '|'.join(params['v'])
                ad_name = None
                installed_via_ad = False
                installed_via_unknown = False
            elif 'q' in params and params['q'] != None and len(params['q'][0]) > 0:
                installed_via_newsfeed = False
                referring_user = None
                newsfeed_search_term = None
                newsfeed_verb = None
                ad_name = '|'.join(params['q'])
                installed_via_ad = True
                installed_via_unknown = False
            else:
                installed_via_newsfeed = False
                referring_user = None
                newsfeed_search_term = None
                newsfeed_verb = None
                ad_name = None
                installed_via_ad = False
                installed_via_unknown = True   
            
            install_metric = InstallMetric.gql("WHERE user = :1", user).get()
            if install_metric == None:
                install_metric = InstallMetric(
                    fb_user_id = user.fb_user_id,
                    user = user,
                    installed_at = installed_at,
                    installed_via_ad = installed_via_ad,
                    ad_name = ad_name,
                    installed_via_newsfeed = installed_via_newsfeed,
                    referring_user = referring_user,
                    newsfeed_search_term = newsfeed_search_term,
                    newsfeed_verb = newsfeed_verb,
                    installed_via_unknown = installed_via_unknown,
                    referring_page_view = referring_page_view
                )
            else:    
                install_metric.fb_user_id = user.fb_user_id
                install_metric.user = user
                install_metric.installed_at = installed_at
                install_metric.installed_via_ad = installed_via_ad
                install_metric.ad_name = ad_name
                install_metric.installed_via_newsfeed = installed_via_newsfeed
                install_metric.referring_user = referring_user
                install_metric.newsfeed_search_term = newsfeed_search_term
                install_metric.newsfeed_verb = newsfeed_verb
                install_metric.installed_via_unknown = installed_via_unknown
                install_metric.referring_page_view = referring_page_view
                
            install_metric.put()

        self.response.out.write(simplejson.dumps({'status': 'ok', 'cursor': str(query.cursor()), 'count': len(users) }))
Esempio n. 6
0
 def get(self):
     c = h.context()
     c['model'] = 'installmetric'
     c['model_properties'] = sorted(InstallMetric.properties())
     h.render_out(self, 'admin.tplt', c)