0002_regenerate_missing_gas_data.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:dsmr-reader 作者: dennissiemensma 项目源码 文件源码
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()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号