Example #1
0
    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
Example #2
0
 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
Example #3
0
 def _get_data_point(self, data_instance):
     return Presenter.DataPoint(datetime_to_timestamp(data_instance.created) * 1000, data_instance.value)
Example #4
0
 def _get_data_point(self, data_instance):
     return Presenter.DataPoint(
         datetime_to_timestamp(data_instance.created) * 1000,
         data_instance.value)