def points(self): if len(self.instances) <= 0: return if self.granularity: prev_average = None prev_period = None for start_time, end_time in self._get_intervals( self.start_time, self.granularity, self.end_time): def data_instance_filter(item): if item.created < start_time or item.created >= end_time: return False return True instances = filter(data_instance_filter, self.instances) if len(instances) > 0: total = 0 for instance in instances: total += int(instance.value) average = float(total) / len(instances) if prev_period is not None: delta = end_time - prev_period['end_time'] delta_secs = delta.days * 86400 + delta.seconds value = (average - prev_period['average']) / delta_secs prev_period = { 'start_time': start_time, 'end_time': end_time, 'average': average, } yield Presenter.DataPoint( datetime_to_timestamp(start_time) * 1000, value) else: prev_period = { 'start_time': start_time, 'end_time': end_time, 'average': average, } continue else: yield Presenter.NullDataPoint() else: for obj in self.queryset: if self._prev_obj is None: # This is the first DataInstance, do NOT create a DataPoint self._prev_obj = obj continue # For every other instance, yield a DataPoint with the previous # DataInstances value subtracted. data_point = self._get_data_point(obj) prev_data_point = self._get_data_point(self._prev_obj) data_point.y -= prev_data_point.y self._prev_obj = obj yield data_point
def points(self): if len(self.instances) <= 0: return if self.granularity: prev_average = None prev_period = None for start_time, end_time in self._get_intervals(self.start_time, self.granularity, self.end_time): def data_instance_filter(item): if item.created < start_time or item.created >= end_time: return False return True instances = filter(data_instance_filter, self.instances) if len(instances) > 0: total = 0 for instance in instances: total += int(instance.value) average = float(total) / len(instances) if prev_period is not None: delta = end_time - prev_period['end_time'] delta_secs = delta.days * 86400 + delta.seconds value = (average - prev_period['average']) / delta_secs prev_period = { 'start_time': start_time, 'end_time': end_time, 'average': average, } yield Presenter.DataPoint(datetime_to_timestamp(start_time)*1000, value) else: prev_period = { 'start_time': start_time, 'end_time': end_time, 'average': average, } continue else: yield Presenter.NullDataPoint() else: for obj in self.queryset: if self._prev_obj is None: # This is the first DataInstance, do NOT create a DataPoint self._prev_obj = obj continue # For every other instance, yield a DataPoint with the previous # DataInstances value subtracted. data_point = self._get_data_point(obj) prev_data_point = self._get_data_point(self._prev_obj) data_point.y -= prev_data_point.y self._prev_obj = obj yield data_point
def _get_data_point(self, data_instance): return Presenter.DataPoint(datetime_to_timestamp(data_instance.created) * 1000, data_instance.value)
def _get_data_point(self, data_instance): return Presenter.DataPoint( datetime_to_timestamp(data_instance.created) * 1000, data_instance.value)