Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
topydo
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
topydo
Commits
50eea969
Commit
50eea969
authored
Nov 19, 2014
by
Bram Schoenmakers
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add --date flag for setting custom completion date.
parent
ce119824
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
56 additions
and
10 deletions
+56
-10
test/DoCommandTest.py
test/DoCommandTest.py
+32
-0
test/TodoBaseTest.py
test/TodoBaseTest.py
+8
-1
topydo/lib/DoCommand.py
topydo/lib/DoCommand.py
+10
-3
topydo/lib/TodoBase.py
topydo/lib/TodoBase.py
+3
-4
topydo/lib/TodoListBase.py
topydo/lib/TodoListBase.py
+3
-2
No files found.
test/DoCommandTest.py
View file @
50eea969
...
...
@@ -195,6 +195,38 @@ class DoCommandTest(CommandTest.CommandTest):
self
.
assertEquals
(
self
.
output
,
"Completed: x %s Baz p:1
\
n
"
%
self
.
today
)
self
.
assertEquals
(
self
.
errors
,
""
)
def
test_do_custom_date1
(
self
):
command
=
DoCommand
.
DoCommand
([
"-d"
,
"2014-11-18"
,
"3"
],
self
.
todolist
,
self
.
out
,
self
.
error
)
command
.
execute
()
self
.
assertTrue
(
self
.
todolist
.
is_dirty
())
self
.
assertEquals
(
self
.
output
,
"Completed: x 2014-11-18 Baz p:1
\
n
"
)
self
.
assertEquals
(
self
.
errors
,
""
)
def
test_do_custom_date2
(
self
):
command
=
DoCommand
.
DoCommand
([
"-d"
,
"2014-11-18"
,
"1"
],
self
.
todolist
,
self
.
out
,
self
.
error
,
_yes_prompt
)
command
.
execute
()
self
.
assertTrue
(
self
.
todolist
.
is_dirty
())
self
.
assertEquals
(
self
.
output
,
" 2 Bar p:1
\
n
3 Baz p:1
\
n
Completed: x 2014-11-18 Bar p:1
\
n
Completed: x 2014-11-18 Baz p:1
\
n
Completed: x 2014-11-18 Foo id:1
\
n
"
)
self
.
assertEquals
(
self
.
errors
,
""
)
def
test_do_custom_date3
(
self
):
command
=
DoCommand
.
DoCommand
([
"--date=2014-11-18"
,
"3"
],
self
.
todolist
,
self
.
out
,
self
.
error
)
command
.
execute
()
self
.
assertTrue
(
self
.
todolist
.
is_dirty
())
self
.
assertEquals
(
self
.
output
,
"Completed: x 2014-11-18 Baz p:1
\
n
"
)
self
.
assertEquals
(
self
.
errors
,
""
)
def
test_do_custom_date4
(
self
):
command
=
DoCommand
.
DoCommand
([
"-d"
,
"foo"
,
"3"
],
self
.
todolist
,
self
.
out
,
self
.
error
)
command
.
execute
()
self
.
assertTrue
(
self
.
todolist
.
is_dirty
())
self
.
assertEquals
(
self
.
output
,
"Completed: x 2014-11-19 Baz p:1
\
n
"
)
self
.
assertEquals
(
self
.
errors
,
""
)
def
test_empty
(
self
):
command
=
DoCommand
.
DoCommand
([],
self
.
todolist
,
self
.
out
,
self
.
error
)
command
.
execute
()
...
...
test/TodoBaseTest.py
View file @
50eea969
...
...
@@ -16,7 +16,7 @@
""" Tests for the TodoBase class. """
from
datetime
import
date
from
datetime
import
date
,
timedelta
import
re
import
unittest
...
...
@@ -273,6 +273,13 @@ class TodoBaseTester(unittest.TestCase):
self
.
assertEquals
(
todo
.
src
,
"x 2014-06-13 Foo"
)
def
test_set_complete6
(
self
):
todo
=
TodoBase
.
TodoBase
(
"Foo"
)
yesterday
=
date
.
today
()
-
timedelta
(
1
)
todo
.
set_completed
(
yesterday
)
self
.
assertEquals
(
todo
.
src
,
"x %s Foo"
%
yesterday
.
isoformat
())
def
test_set_source_text
(
self
):
todo
=
TodoBase
.
TodoBase
(
"(B) Foo"
)
...
...
topydo/lib/DoCommand.py
View file @
50eea969
...
...
@@ -14,11 +14,13 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from
datetime
import
date
import
re
from
DCommand
import
DCommand
from
PrettyPrinter
import
pretty_print
from
Recurrence
import
advance_recurring_todo
,
strict_advance_recurring_todo
from
Utils
import
date_string_to_date
class
DoCommand
(
DCommand
):
def
__init__
(
self
,
p_args
,
p_todolist
,
...
...
@@ -27,16 +29,19 @@ class DoCommand(DCommand):
p_prompt
=
lambda
a
:
None
):
self
.
strict_recurrence
=
False
self
.
completion_date
=
date
.
today
()
super
(
DoCommand
,
self
).
__init__
(
p_args
,
p_todolist
,
p_out
,
p_err
,
p_prompt
)
def
get_flags
(
self
):
""" Additional flags. """
return
(
"
s"
,
[
"strict"
])
return
(
"
d:s"
,
[
"date="
,
"strict"
])
def
process_flag
(
self
,
p_opt
,
p_value
):
if
p_opt
==
"-s"
or
p_opt
==
"--strict"
:
self
.
strict_recurrence
=
True
elif
p_opt
==
"-d"
or
p_opt
==
"--date"
:
self
.
completion_date
=
date_string_to_date
(
p_value
)
or
date
.
today
()
def
_handle_recurrence
(
self
):
if
self
.
todo
.
has_tag
(
'rec'
):
...
...
@@ -72,10 +77,10 @@ class DoCommand(DCommand):
The core operation on the todo itself. Also used to operate on
child/parent tasks.
"""
self
.
todolist
.
set_todo_completed
(
p_todo
)
self
.
todolist
.
set_todo_completed
(
p_todo
,
self
.
completion_date
)
def
usage
(
self
):
return
"""Synopsis: do [--force] [--strict] <NUMBER>"""
return
"""Synopsis: do [--
date] [--
force] [--strict] <NUMBER>"""
def
help
(
self
):
return
"""Marks the todo with given number as complete.
...
...
@@ -91,4 +96,6 @@ is used to calculate the new recurrence date. Using --strict prevents this,
then the actual due date of the todo item is used to calculate the new
recurrence date. Note that a future due date is always used as such to
calculate the new due date.
Use --date to set a custom completion date.
"""
topydo/lib/TodoBase.py
View file @
50eea969
...
...
@@ -185,7 +185,7 @@ class TodoBase(object):
"""
return self.fields['
completionDate
']
def set_completed(self):
def set_completed(self
, p_completion_date=date.today()
):
"""
Marks the todo as complete.
Sets the completed flag and sets the completion date to today.
...
...
@@ -194,11 +194,10 @@ class TodoBase(object):
self.set_priority(None)
self.fields['
completed
'] = True
today = date.today()
self.fields['
completionDate
'] = today
self.fields['
completionDate
'] = p_completion_date
self.src = re.sub(r'
^
(
\
([
A
-
Z
]
\
)
)
?
',
\
'
x
' +
today
.isoformat() + '
', self.src)
'
x
' +
p_completion_date
.isoformat() + '
', self.src)
def set_creation_date(self, p_date=date.today()):
"""
...
...
topydo/lib/TodoListBase.py
View file @
50eea969
...
...
@@ -18,6 +18,7 @@
A list of todo items.
"""
from
datetime
import
date
import
re
import
Filter
...
...
@@ -164,8 +165,8 @@ class TodoListBase(object):
def todos(self):
return self._todos
def set_todo_completed(self, p_todo):
p_todo.set_completed()
def set_todo_completed(self, p_todo
, p_completion_date=date.today()
):
p_todo.set_completed(
p_completion_date
)
self.dirty = True
def set_priority(self, p_todo, p_priority):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment