Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 21 additions & 12 deletions project/main/data/get_data_helper.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import datetime
import math

import dateutil.parser
import dateutil.tz
import project.main.exceptions as exceptions
import project.main.same_function_helper as same_helper
import project.main.util_helper as util_helper
Expand Down Expand Up @@ -77,9 +78,10 @@ def queryDBGasAverageMeasurement(qhawax_name, gas_name):

qhawax_id = same_helper.getQhawaxID(qhawax_name)
if qhawax_id != None:
initial_timestamp = datetime.datetime.now()
last_timestamp = datetime.datetime.now() - datetime.timedelta(hours=24)

initial_timestamp = datetime.datetime.now(dateutil.tz.tzutc()).replace(minute=0,second=0, microsecond=0)
last_timestamp = (datetime.datetime.now(dateutil.tz.tzutc())
- datetime.timedelta(hours=23)).replace(minute=0,second=0, microsecond=0)

column_array = [
AirQualityMeasurement.CO.label("sensor"),
AirQualityMeasurement.H2S.label("sensor"),
Expand All @@ -96,14 +98,21 @@ def queryDBGasAverageMeasurement(qhawax_name, gas_name):
AirQualityMeasurement.timestamp_zone,
column_array[i],
)

return (
session.query(*sensors)
.filter(AirQualityMeasurement.qhawax_id == qhawax_id)
.filter(AirQualityMeasurement.timestamp_zone >= last_timestamp)
.filter(AirQualityMeasurement.timestamp_zone <= initial_timestamp)
.order_by(AirQualityMeasurement.timestamp_zone.asc())
.all()
series = session.query(
db.func.generate_series(last_timestamp,initial_timestamp,
datetime.timedelta(hours=1)).label('timestamp_zone')).subquery()
values = session.query(*sensors).\
filter(AirQualityMeasurement.qhawax_id == qhawax_id).\
filter(AirQualityMeasurement.timestamp_zone >= last_timestamp).\
filter(AirQualityMeasurement.timestamp_zone <= initial_timestamp).\
subquery()

return (
session.query(values.c.sensor,series.c.timestamp_zone,
db.func.coalesce(values.c.sensor, 0)).\
outerjoin(series, values.c.timestamp_zone == series.c.timestamp_zone, full=True).\
order_by(series.c.timestamp_zone).\
all()
)
return None

Expand Down
35 changes: 5 additions & 30 deletions project/main/util_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,38 +208,13 @@ def areFieldsValid(data):
def getFormatData(gas_average_measurement):
gas_average_measurement_list = []
if gas_average_measurement is not None:
data = exceptions.checkVariable_helper(gas_average_measurement, list)
next_hour = -1
data = exceptions.checkVariable_helper(gas_average_measurement, list)
for measurement in gas_average_measurement:
gas_measurement = measurement._asdict()
hour = gas_measurement["timestamp_zone"].hour
if next_hour == -1:
gas_average_measurement_list.append(gas_measurement)
next_hour = hour + 1
else:
if hour == next_hour:
gas_average_measurement_list.append(gas_measurement)
else:
if (
next_hour > hour
): # si next_hour > hour => se resta con 24 horas
diff_0 = abs(24 - next_hour)
diff = diff_0 + hour
else:
diff = abs(hour - next_hour - 1)
for i in range(1, diff + 1):
new_variable = {
"timestamp_zone": before_date
+ datetime.timedelta(hours=i),
"sensor": "",
}
gas_average_measurement_list.append(new_variable)
gas_average_measurement_list.append(gas_measurement)
next_hour = hour + 1
before_date = gas_measurement["timestamp_zone"]
if next_hour == 24:
next_hour = 0
return gas_average_measurement_list
if gas_measurement["sensor"] is None:
gas_measurement["sensor"]=""
gas_average_measurement_list.append(gas_measurement)
return gas_average_measurement_list
return None


Expand Down