def sites_query(query): """Sites matching query""" sites = (db.session.query( Visit.host, count(1).label('count')).filter(Visit.host.like( '%%%s%%' % query)).group_by(Visit.host).order_by( desc('count')))[:20] return render_template('sites_table.jinja2', sites=sites)
def sites(): """List of sites""" table, attr, countcol = get_attribute_and_count('domain') sites = (db.session.query( attr, countcol.label('count')).group_by(attr).order_by( desc(countcol)))[:20] all_ = db.session.query(countcol).scalar() return render_template('sites.jinja2', sites=sites, all_=all_)
def sites_query(query): """Sites matching query""" sites = ( db.session .query(Visit.host, count(1).label('count')) .filter(Visit.host.like('%%%s%%' % query)) .group_by(Visit.host) .order_by(desc('count')))[:20] return render_template('sites_table.jinja2', sites=sites)
def sites(): """List of sites""" table, attr, countcol = get_attribute_and_count('domain') sites = ( db.session .query(attr, countcol.label('count')) .group_by(attr) .order_by(desc(countcol)))[:20] all_ = db.session.query(countcol).scalar() return render_template('sites.jinja2', sites=sites, all_=all_)
def process_data(site, graph, criteria, from_date, to_date, step, stamp, lang): table, criterion, count_col = get_attribute_and_count(criteria) return { 'list': [{ 'key': key, 'count': count } for key, count in db.session.query(criterion.label( "key"), count_col.label("count")).filter(on(site, table)).filter( between(from_date, to_date, table=table)).group_by( criterion).order_by(desc(count_col)).limit(10).all()] }
def process_data(site, graph, criteria, from_date, to_date, step, stamp, lang): table, criterion, count_col = get_attribute_and_count(criteria) return {'list': [{'key': key, 'count': count} for key, count in db.session .query(criterion.label("key"), count_col.label("count")) .filter(on(site, table)) .filter(between(from_date, to_date, table=table)) .group_by(criterion) .order_by(desc(count_col)) .limit(10) .all()]}
def process_data(site, graph, criteria, from_date, to_date, step, stamp, lang): table, criterion, count_col = get_attribute_and_count(criteria) restrict = (criterion != None) if criteria == 'browser_name_version': restrict = ((table.c.browser_name != None) & (table.c.browser_version != None)) rq = (db.session.query( criterion.label("key"), count_col.label("count")).filter( on(site, table)).filter(between( from_date, to_date, table=table)).filter(restrict).group_by(criterion).order_by( desc(count_col))) return transform_for_pie( rq.limit(10).all(), site, from_date, to_date, lang, criteria == 'pretty_referrer')
def process_data(site, graph, criteria, from_date, to_date, step, stamp, lang): table, criterion, count_col = get_attribute_and_count(criteria) restrict = (criterion != None) if criteria == 'browser_name_version': restrict = ((table.c.browser_name != None) & (table.c.browser_version != None)) rq = (db.session .query(criterion.label("key"), count_col.label("count")) .filter(on(site, table)) .filter(between(from_date, to_date, table=table)) .filter(restrict) .group_by(criterion) .order_by(desc(count_col))) return transform_for_pie(rq.limit(10).all(), site, from_date, to_date, lang, criteria == 'pretty_referrer')
def process(self): def get(key, default=None, from_encoding=None): value = request_args.get(key, [default])[0] if value and 'undefined' in value: value = None if value and from_encoding: value = value.decode(from_encoding).encode('utf-8') return value request_args = urlparse.parse_qs(self.query) kind = get('d') uuid = get('_') user_agent = UserAgent(self.user_agent) if kind == 'o': last_visit = get('l') if last_visit and 'undefined' not in last_visit: last_visit = datetime.fromtimestamp(int(last_visit) / 1000) else: last_visit = None visit = { 'uuid': uuid, 'host': get('k'), 'site': get('u'), 'client_tz_offset': get('z', 0), 'date': self.stamp, 'last_visit': last_visit, 'ip': self.remote_addr, 'referrer': get('r'), 'pretty_referrer': parse_referrer(get('r', from_encoding='latin-1')), 'referrer_domain': parse_domain(get('r', from_encoding='latin-1')), 'size': get('s'), 'page': get('p', from_encoding='latin-1'), 'hash': get('h', from_encoding='latin-1'), 'query_string': get('q'), 'language': get('i'), 'browser_name': user_agent.browser, 'browser_version': user_agent.version, 'platform': user_agent.platform } self.add_geolocalization(visit) Visit.insert(**visit) db.commit() return visit if kind == 'c': visit = (Visit.filter(Visit.uuid == uuid).order_by(desc( Visit.date)).first()) if visit: visit.time = timedelta(seconds=int(get('t', 0)) / 1000) db.commit()