Commit 2b692ce8 authored by Kirill Smelkov's avatar Kirill Smelkov

X Draft support for date modifier

e.g. due:=<date> ("=" prefix) automatically sets the todo task to be
active only on that date.
parent 64eb927f
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
This module provides the Todo class. This module provides the Todo class.
""" """
from datetime import date from datetime import date, timedelta
from topydo.lib.Config import config from topydo.lib.Config import config
from topydo.lib.TodoBase import TodoBase from topydo.lib.TodoBase import TodoBase
...@@ -47,13 +47,39 @@ class Todo(TodoBase): ...@@ -47,13 +47,39 @@ class Todo(TodoBase):
return result return result
def _due_date(self): # -> (due, flags)
""" Returns date object for due date and set of due modifier flags. """
flags = set()
due = self.tag_value(config().tag_due())
if due is None:
return (None, flags)
if due.startswith('='):
flags.add('on')
due = due[1:]
tdue = None
try:
tdue = date_string_to_date(due)
except ValueError:
flags = set()
return (tdue, flags)
def start_date(self): def start_date(self):
""" Returns a date object of the todo's start date. """ """ Returns a date object of the todo's start date. """
return self.get_date(config().tag_start()) tstart = self.get_date(config().tag_start())
if tstart is not None:
return tstart
tdue, flags = self._due_date()
if 'on' in flags:
tstart = tdue - timedelta(days=1)
return tstart
def due_date(self): def due_date(self):
""" Returns a date object of the todo's due date. """ """ Returns a date object of the todo's due date. """
return self.get_date(config().tag_due()) tdue, _ = self._due_date()
return tdue
def is_active(self): def is_active(self):
""" """
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment