Private
Public Access
1
0

rudimentary alert report page

This commit is contained in:
Sander Roosendaal
2019-08-18 15:03:21 +02:00
parent f9231f94e0
commit 5015266ba8
5 changed files with 125 additions and 17 deletions

View File

@@ -93,6 +93,7 @@ def alert_get_stats(alert,nperiod=0):
ids = [w.id for w in workouts]
df = getsmallrowdata_db(columns,ids=ids,doclean=True,workstrokesonly=workstrokesonly)
if df.empty:
return {
'workouts':len(workouts),
@@ -102,25 +103,37 @@ def alert_get_stats(alert,nperiod=0):
'nr_strokes_qualifying':0,
}
# check if filters are in columns list
pdcolumns = set(df.columns)
# drop strokes through filter
for condition in alert.filter.all():
if condition.condition == '>':
mask = df[condition.metric] > condition.value1
df.loc[mask,alert.measured.metric] = np.nan
elif condition.condition == '<':
mask = df[condition.metric] < condition.value1
df.loc[mask,alert.measured.metric] = np.nan
elif condition.condition == 'between':
mask = df[condition.metric] > condition.value1
mask2 = df[condition.metric] < condition.value2
df.loc[mask & mask2,alert.measured.metric] = np.nan
elif condition.condition == '=':
mask = df[condition.metric] == condition.value1
df.loc[mask,alert.measured.metric] = np.nan
if set(columns) <= pdcolumns:
for condition in alert.filter.all():
if condition.condition == '>':
mask = df[condition.metric] > condition.value1
df.loc[mask,alert.measured.metric] = np.nan
elif condition.condition == '<':
mask = df[condition.metric] < condition.value1
df.loc[mask,alert.measured.metric] = np.nan
elif condition.condition == 'between':
mask = df[condition.metric] > condition.value1
mask2 = df[condition.metric] < condition.value2
df.loc[mask & mask2,alert.measured.metric] = np.nan
elif condition.condition == '=':
mask = df[condition.metric] == condition.value1
df.loc[mask,alert.measured.metric] = np.nan
df.dropna(inplace=True,axis=0)
else:
return {
'workouts':len(workouts),
'startdate':startdate,
'enddate':enddate,
'nr_strokes':0,
'nr_strokes_qualifying':0,
}
# count strokes
nr_strokes = len(df)