11
11
)
12
12
13
13
import logging
14
+ import json
14
15
15
16
from pypuppetdb .QueryBuilder import (ExtractOperator , AndOperator ,
16
17
EqualsOperator , FunctionOperator ,
17
18
NullOperator , OrOperator ,
18
- LessEqualOperator , RegexOperator )
19
+ LessEqualOperator , RegexOperator ,
20
+ GreaterEqualOperator )
19
21
20
22
from puppetboard .forms import ENABLED_QUERY_ENDPOINTS , QueryForm
21
23
from puppetboard .utils import (get_or_abort , yield_or_stop ,
@@ -457,6 +459,7 @@ def reports_ajax(env, node_name):
457
459
order_dir = request .args .get ('order[0][dir]' , 'desc' )
458
460
order_args = '[{"field": "%s", "order": "%s"}]' % (order_filter , order_dir )
459
461
status_args = request .args .get ('columns[1][search][value]' , '' ).split ('|' )
462
+ date_args = request .args .get ('columns[0][search][value]' , '' )
460
463
max_col = len (REPORTS_COLUMNS )
461
464
for i in range (len (REPORTS_COLUMNS )):
462
465
if request .args .get ("columns[%s][data]" % i , None ):
@@ -480,6 +483,20 @@ def reports_ajax(env, node_name):
480
483
"configuration_version" , r"%s" % search_arg ))
481
484
reports_query .add (search_query )
482
485
486
+ if date_args :
487
+ dates = json .loads (date_args )
488
+
489
+ if len (dates ) > 0 :
490
+ date_query = AndOperator ()
491
+
492
+ if 'min' in dates :
493
+ date_query .add (GreaterEqualOperator ('end_time' , dates ['min' ]))
494
+
495
+ if 'max' in dates :
496
+ date_query .add (LessEqualOperator ('end_time' , dates ['max' ]))
497
+
498
+ reports_query .add (date_query )
499
+
483
500
status_query = OrOperator ()
484
501
for status_arg in status_args :
485
502
if status_arg in ['failed' , 'changed' , 'unchanged' ]:
0 commit comments