def regenerate_missing_data(apps, schema_editor):
GasConsumption = apps.get_model('dsmr_consumption', 'GasConsumption')
HourStatistics = apps.get_model('dsmr_stats', 'HourStatistics')
DayStatistics = apps.get_model('dsmr_stats', 'DayStatistics')
# Skip when there were no gas readings at all.
if not GasConsumption.objects.exists():
return
try:
# Check for any missing gas data.
first_missing_gas_stat = HourStatistics.objects.filter(
gas__isnull=True,
hour_start__gte=timezone.make_aware(timezone.datetime(2016, 1, 1, 12))
).order_by('hour_start')[0]
except IndexError:
return
print('')
target_hour = timezone.localtime(first_missing_gas_stat.hour_start)
day_start = timezone.make_aware(timezone.datetime.combine(target_hour, time.min))
print('Deleting statistics starting from: {}'.format(day_start))
HourStatistics.objects.filter(hour_start__gte=day_start).delete()
DayStatistics.objects.filter(day__gte=day_start.date()).delete()
days_diff = (timezone.now() - day_start).days
import dsmr_stats.services
for x in range(1, days_diff + 1):
# Just call analyze for each day. If we missed a day or so, the backend will regenerate it.
print('Regenerating day: {} / {}'.format(x, days_diff))
dsmr_stats.services.analyze()
0002_regenerate_missing_gas_data.py 文件源码
python
阅读 20
收藏 0
点赞 0
评论 0
评论列表
文章目录