Пример #1
0
 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)
Пример #2
0
 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_)
Пример #3
0
 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)
Пример #4
0
 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_)
Пример #5
0
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()]
    }
Пример #6
0
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()]}
Пример #7
0
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')
Пример #8
0
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')
Пример #9
0
    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()