I ended up writing a small functions for this purpose
(defun j/org-evaluate-if-actionable ()
"Returns t if the task at point is actionable or nil if it isn't"
(and (org-entry-get (point) "ACTIONABLE")
(string< (org-read-date nil nil (org-entry-get (point) "ACTIONABLE"))
(org-read-date nil nil "+0"))))
(defun j/org-process-task ()
"Vefifies if a task is actionable. If it is, set it as actionable"
(message "PROPIEDAD: %s" (stringp (org-entry-get (point) "ACTIONABLE")))
(message "Tarea: %s" (org-entry-get (point) "ITEM"))
(message "Accionable: %s:" (j/org-evaluate-if-actionable))
(when (j/org-evaluate-if-actionable)
(org-todo "TODO")
(org-delete-property "ACTIONABLE")))
(defun j/org-verify-actionable-tasks ()
"Goes through al agenda files checking if FUTU tasks are actionable"
;(interactive)
(org-map-entries
'(j/org-process-task)
"/+FUTU" 'agenda))
;; Ejecutar j/org-verify-actionable-tasks cada vez que se corra la agenda. Lo hace antes de que se calcula le agenda.
(add-hook 'org-agenda-mode-hook #'j/org-actionable)
(defun j/org-actionable ()
(j/org-verify-actionable-tasks))
This function will find tasks with a FUTU
TODO state and an ACTIONABLE
property prior to today. Then, it changes the TODO state to TODO
and removes the ACTIONABLE
property. For example, this task
* FUTU Some task
:PROPERTIES:
:ACTIONABLE: [2020-04-29]
:END:
Will look like this after the date set in actionable ACTIONABLE
:
* TODO Some task