Skip to content

Commit

Permalink
New definition of 'valid days in year'
Browse files Browse the repository at this point in the history
  • Loading branch information
why-not-try-calmer committed Nov 23, 2023
1 parent 9013ef4 commit 44f9ee5
Showing 1 changed file with 19 additions and 12 deletions.
31 changes: 19 additions & 12 deletions comptages/core/utils.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import os

from datetime import datetime
from comptages.core.statistics import get_time_data_yearly

from qgis.core import Qgis
from qgis.PyQt.uic import loadUiType
Expand All @@ -9,6 +10,8 @@
from qgis.PyQt.QtSql import QSqlDatabase
from qgis.utils import iface

from django.db.models.functions import Trunc

from comptages.core.settings import Settings
from comptages.datamodel import models

Expand Down Expand Up @@ -70,15 +73,19 @@ def connect_to_db():

def count_valid_days(section_id: str, year: int) -> int:
"""Count valid days across all counts for `section` and `year`."""
days = set()
counts = models.Count.objects.filter(
id_installation__lane__id_section=section_id,
start_process_date__year=year,
)
for count in counts:
details = models.CountDetail.objects.filter(id_count=count)
for detail in details:
date = detail.timestamp.date()
days.add(date)

return len(days)
section = models.Section.objects.get(id=section_id)
df = get_time_data_yearly(year, section)
df.reset_index()

valid_days_in_year = set()
valid_hours_in_day = set()
prev_day = None
for _, row in df.iterrows():
if row["date"] != prev_day:
if len(valid_hours_in_day) >= 14:
valid_days_in_year.add(prev_day)
valid_hours_in_day.clear()
if 6 <= row["hour"] <= 22 and row["thm"] > 0:
valid_hours_in_day.add(row["hour"])
prev_day = row["date"]
return len(valid_days_in_year)

0 comments on commit 44f9ee5

Please sign in to comment.