@@ -474,6 +474,30 @@ def getDueFromInput(query):
474
474
log .debug (nextWeekday (datetime .datetime .today (), naturalLanguageWeekdays [value .split (' ' )[0 ].lower ()]))
475
475
elif value .split (' ' )[0 ].lower () in naturalLanguageRelativeDays .keys (): # Get date of today/tomorrow
476
476
naturalValue = datetime .datetime .today () + datetime .timedelta (naturalLanguageRelativeDays [value .split (' ' )[0 ].lower ()])
477
+ time = re .search (r'(2[0-3]|[01]?[0-9])\.[0-5]?[0-9](\.[0-5]?[0-9])?' , value )
478
+
479
+ h = 0
480
+ m = 0
481
+ if (time and time .group ()) or len (value .split (' ' )) > 1 :
482
+ if time and '.' in time .group ():
483
+ if DEBUG > 1 :
484
+ log .debug ('Found time: ' + str (time .group ()))
485
+ # e.g. @today 14.00
486
+ h = int (time .group ().split ('.' )[0 ])
487
+ m = int (time .group ().split ('.' )[1 ])
488
+ elif len (value .split (' ' )) > 1 :
489
+ if not isInteger (value .split (' ' )[1 ]):
490
+ wf3 .add_item (
491
+ title = 'Not a valid time.' ,
492
+ subtitle = 'Please use 24h time format with a dot - example: 15.00' ,
493
+ valid = False ,
494
+ autocomplete = query + ' ' ,
495
+ icon = ICON_WARNING
496
+ )
497
+ wf3 .send_feedback ()
498
+ exit ()
499
+ h = int (value .split (' ' )[1 ])
500
+ naturalValue = (datetime .datetime .today () + datetime .timedelta (naturalLanguageRelativeDays [value .split (' ' )[0 ].lower ()])).replace (hour = h , minute = m )
477
501
if DEBUG > 1 :
478
502
log .debug ('Received relative date: ' + str (naturalValue ))
479
503
log .debug (datetime .datetime .today () + datetime .timedelta (naturalLanguageRelativeDays [value .split (' ' )[0 ].lower ()]))
@@ -488,7 +512,7 @@ def getDueFromInput(query):
488
512
if DEBUG > 1 :
489
513
log .debug ('Found date: ' + str (date .group ()))
490
514
try :
491
- naturalValue = datetime .datetime .strptime (date .group () + 'T' + datetime .datetime .now ().strftime ("%H.%M.%S" ), '%Y-%m-%dT%H.%M.%S' ) # Convert string 'date + current time' to dateTime.
515
+ naturalValue = datetime .datetime .strptime (date .group () + 'T' + datetime .datetime .now ().strftime ("%H.%M.%S" ), '%Y-%m-%dT%H.%M.%S' ) # Convert string 'date + current time' to dateTime
492
516
except ValueError : # Incorrect format, e.g. 2020-01-1
493
517
naturalValue = ''
494
518
pass
@@ -589,6 +613,19 @@ def getPriorityFromInput(query):
589
613
590
614
return inputPriority
591
615
616
+ def isInteger (n ):
617
+ '''Determines if string can be considered as integer
618
+
619
+ ----------
620
+ @param str value: The value to check.
621
+ '''
622
+ try :
623
+ int (n )
624
+ except ValueError :
625
+ pass
626
+ return False
627
+ else :
628
+ return True # float(n).is_integer()
592
629
593
630
def main (wf ):
594
631
global query
0 commit comments