Example #1
0
def haopan_charts(sakuya_db):

    try:
        prod = int(request.params['prod'])
        cities = [int(i) for i in request.params['cities'].split(',')]
        channels = [int(i) for i in request.params['channels'].split(',')]
        entries = [int(i) for i in request.params['entries'].split(',')]
        charts = [int(i) for i in request.params['charts'].split(',')]

    except Exception:
        return util.output('error', msg='Invalid parameters.')

    d_charts = haopan.get_charts()
    chart_list = []
    for k, v in d_charts.iteritems():
        if k[0] == prod\
                and k[1] in charts\
                and k[2] in cities\
                and k[3] in channels\
                and k[4] in entries:

            titles = []
            if k[2]:
                titles.append(haopan.D_CITIES[k[2]])
            if k[3]:
                titles.append(haopan.D_CHANNELS[k[3]])
            if k[4]:
                titles.append(haopan.D_ENTRIES[k[4]])
            titles.append(haopan.D_CHARTS_DISPLAY[k[1]])

            if k[1] == 2:
                k_ = list(k); k_[1] = 3; k_ = tuple(k_)
                if k_ in d_charts:
                    chart_list.append((' - '.join(titles), '%d/%d' % (v, d_charts[k_])))
                else:
                    chart_list.append((' - '.join(titles), v))
            else:
                chart_list.append((' - '.join(titles), v))

    return util.output('ok', charts=chart_list)
Example #2
0
    def stats(self):

        if not self.data:
            return

        try:
            rows = haopan.fill_data(self.data)

            logging.info('stats time: %s' %
                         self.next_dt.strftime('%Y-%m-%d %H:%M'))

            d_charts = haopan.get_charts(True)
            stats = [0, 0]
            for k, v in rows.iteritems():

                id = d_charts.get(k)
                if id is None:
                    logging.info('key %s not found.' % str(k))
                    stats[1] += 1
                    continue

                row = ChartdataTmpl.gen(self.next_dt.strftime('%Y%m%d'))()
                row.ds_id = id
                row.time = self.next_dt
                row.data = v
                self.sakuya_db.add(row)
                stats[0] += 1
                logging.info('key: %s, id: %d, data: %d' % (str(k), id, v))

            self.sakuya_db.commit()
            logging.info('%d rows inserted, %d failed.' % tuple(stats))

        except Exception:
            self.sakuya_db.rollback()
            logging.exception('Fail to stats')

        self.stats_extra()
Example #3
0
    def stats(self):

        if not self.data:
            return

        try:
            rows = haopan.fill_data(self.data)

            logging.info('stats time: %s' % self.next_dt.strftime('%Y-%m-%d %H:%M'))

            d_charts = haopan.get_charts(True)
            stats = [0, 0]
            for k, v in rows.iteritems():

                id = d_charts.get(k)
                if id is None:
                    logging.info('key %s not found.' % str(k))
                    stats[1] += 1
                    continue

                row = ChartdataTmpl.gen(self.next_dt.strftime('%Y%m%d'))()
                row.ds_id = id
                row.time = self.next_dt
                row.data = v
                self.sakuya_db.add(row)
                stats[0] += 1
                logging.info('key: %s, id: %d, data: %d' % (str(k), id, v))

            self.sakuya_db.commit()
            logging.info('%d rows inserted, %d failed.' % tuple(stats))

        except Exception:
            self.sakuya_db.rollback()
            logging.exception('Fail to stats')

        self.stats_extra()