Exemplo n.º 1
0
    def handle(self, *args, **options):

        force_clear = options.get('force-clear')
        verbose = options.get('verbose')
        recalculate = options.get('recalculate-last')

        if recalculate:
            for MetricClass in METRICS:
                RecordPrototype._db_filter(date=MetricClass._last_datetime().date(),
                                           type=MetricClass.TYPE).delete()

        for MetricClass in METRICS:
            if force_clear or MetricClass.FULL_CLEAR_RECUIRED:
                if verbose:
                    print('clear %s' % MetricClass.TYPE)
                MetricClass.clear()

        for i, MetricClass in enumerate(METRICS):
            metric = MetricClass()
            if verbose:
                print('[%3d] calculate %s' % (i, metric.TYPE))

            metric.initialize()
            metric.complete_values()

        models.FullStatistics.objects.all().delete()
        models.FullStatistics.objects.create(data=RecordPrototype.get_js_data())
Exemplo n.º 2
0
    def handle(self, *args, **options):

        force_clear = options.get('force-clear')
        verbose = options.get('verbose')
        recalculate = options.get('recalculate-last')

        if recalculate:
            for MetricClass in METRICS:
                RecordPrototype._db_filter(date=MetricClass._last_datetime().date(),
                                           type=MetricClass.TYPE).delete()

        for MetricClass in METRICS:
            if force_clear or MetricClass.FULL_CLEAR_RECUIRED:
                if verbose:
                    print('clear %s' % MetricClass.TYPE)
                MetricClass.clear()

        for i, MetricClass in enumerate(METRICS):
            metric = MetricClass()
            if verbose:
                print('[%3d] calculate %s' % (i, metric.TYPE))

            metric.initialize()
            metric.complete_values()

        models.FullStatistics.objects.all().delete()
        models.FullStatistics.objects.create(data=RecordPrototype.get_js_data())
Exemplo n.º 3
0
 def test_store_value__float(self):
     self.metric.store_value(datetime.datetime(year=6, month=6, day=6, hour=6), 666.6)
     self.assertEqual(RecordPrototype._db_filter(type=TestMetric.TYPE).count(), 1)
     record = RecordPrototype._db_get_object(0)
     self.assertEqual(record.date, datetime.datetime(year=6, month=6, day=6, hour=6))
     self.assertEqual(record.value_int, 666)
     self.assertEqual(record.value_float, 666.6)
     self.assertTrue(record.type.is_TEST_FLOAT)
Exemplo n.º 4
0
 def test_store_value__float(self):
     self.metric.store_value(
         datetime.datetime(year=6, month=6, day=6, hour=6), 666.6)
     self.assertEqual(
         RecordPrototype._db_filter(type=TestMetric.TYPE).count(), 1)
     record = RecordPrototype._db_get_object(0)
     self.assertEqual(record.date,
                      datetime.datetime(year=6, month=6, day=6, hour=6))
     self.assertEqual(record.value_int, 666)
     self.assertEqual(record.value_float, 666.6)
     self.assertTrue(record.type.is_TEST_FLOAT)
Exemplo n.º 5
0
    def handle(self, *args, **options):

        force_clear = options.get('force-clear')
        verbose = options.get('verbose')
        recalculate = options.get('recalculate-last')

        if recalculate:
            for MetricClass in METRICS:
                RecordPrototype._db_filter(date=MetricClass._last_datetime().date(),
                                           type=MetricClass.TYPE).delete()

        for MetricClass in METRICS:
            if force_clear or MetricClass.FULL_CLEAR_RECUIRED:
                if verbose:
                    print 'clear %s' % MetricClass.TYPE
                MetricClass.clear()

        for i, MetricClass in enumerate(METRICS):
            metric = MetricClass()
            if verbose:
                print '[%3d] calculate %s' % (i, metric.TYPE)

            metric.initialize()
            metric.complete_values()


        data_version = int(settings.get(statistics_settings.JS_DATA_FILE_VERSION_KEY, 0))
        data_version += 1
        output_file = statistics_settings.JS_DATA_FILE_LOCATION % data_version

        output_dir_name = os.path.dirname(output_file)
        if not os.path.exists(output_dir_name):
            os.makedirs(output_dir_name, 0755)

        with open(output_file, 'w') as f:
            f.write(jinja2.render('statistics/js_data.js',
                                  context={'data': s11n.to_json(RecordPrototype.get_js_data())}).encode('utf-8'))

        settings[statistics_settings.JS_DATA_FILE_VERSION_KEY] = str(data_version)
Exemplo n.º 6
0
    def complete_values(self):
        sources = []

        for source in self.SOURCES:
            data = RecordPrototype._db_filter(type=source,
                                              date__gt=self.last_date).order_by('date').values_list('date', 'value_int')
            sources.append(data)

        for source_record in zip(*sources):

            dates, values = zip(*source_record)

            if list(dates) != [dates[0]]*len(dates):
                raise exceptions.UnequalDatesError()

            self.store_value(dates[0], self.get_combined_value(*values))
Exemplo n.º 7
0
    def complete_values(self):
        sources = []

        for source in self.SOURCES:
            data = RecordPrototype._db_filter(type=source,
                                              date__gt=self.last_date).order_by('date').values_list('date', 'value_int')
            sources.append(data)


        for source_record in zip(*sources):

            dates, values = zip(*source_record)

            if list(dates) != [dates[0]]*len(dates):
                raise exceptions.UnequalDatesError()

            self.store_value(dates[0], self.get_combined_value(*values))
Exemplo n.º 8
0
 def _last_datetime(cls):
     try:
         return RecordPrototype._db_filter(
             type=cls.TYPE).order_by('-date')[0].date
     except IndexError:
         return statistics_settings.START_DATE - datetime.timedelta(days=1)
Exemplo n.º 9
0
 def test_last_datetime__no_records(self):
     self.assertEqual(
         RecordPrototype._db_filter(type=TestMetric.TYPE).count(), 0)
     self.assertEqual(self.metric._last_datetime(),
                      datetime.datetime(year=2012, month=6, day=26))
Exemplo n.º 10
0
 def _last_datetime(cls):
     try:
         return RecordPrototype._db_filter(type=cls.TYPE).order_by('-date')[0].date
     except IndexError:
         return statistics_settings.START_DATE - datetime.timedelta(days=1)
Exemplo n.º 11
0
 def test_last_datetime__no_records(self):
     self.assertEqual(RecordPrototype._db_filter(type=TestMetric.TYPE).count(), 0)
     self.assertEqual(self.metric._last_datetime(), datetime.datetime(year=2012, month=6, day=26))