]>
git.madduck.net Git - etc/taskwarrior.git/blobdiff - tasklib/task.py
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
VERSION_2_4_1 = six.u('2.4.1')
VERSION_2_4_2 = six.u('2.4.2')
VERSION_2_4_3 = six.u('2.4.3')
VERSION_2_4_1 = six.u('2.4.1')
VERSION_2_4_2 = six.u('2.4.2')
VERSION_2_4_3 = six.u('2.4.3')
+VERSION_2_4_4 = six.u('2.4.4')
+VERSION_2_4_5 = six.u('2.4.5')
logger = logging.getLogger(__name__)
local_zone = tzlocal.get_localzone()
logger = logging.getLogger(__name__)
local_zone = tzlocal.get_localzone()
class TaskAnnotation(TaskResource):
read_only_fields = ['entry', 'description']
class TaskAnnotation(TaskResource):
read_only_fields = ['entry', 'description']
- def __init__(self, task, data={} ):
+ def __init__(self, task, data=None ):
+ self._load_data(data or dict() )
super(TaskAnnotation, self).__init__(task.warrior)
def remove(self):
super(TaskAnnotation, self).__init__(task.warrior)
def remove(self):
- def refresh(self, only_fields=[] , after_save=False):
+ def refresh(self, only_fields=None , after_save=False):
# Raise error when trying to refresh a task that has not been saved
if not self.saved:
raise Task.NotSaved("Task needs to be saved to be refreshed")
# Raise error when trying to refresh a task that has not been saved
if not self.saved:
raise Task.NotSaved("Task needs to be saved to be refreshed")
# For older TW versions attempt to uniquely locate the task
# using the data we have if it has been just saved.
# This can happen when adding a completed task on older TW versions.
# For older TW versions attempt to uniquely locate the task
# using the data we have if it has been just saved.
# This can happen when adding a completed task on older TW versions.
- if (not valid(output) and self.warrior.version < six.text_type(u'2.4.5')
+ if (not valid(output) and self.warrior.version < VERSION_2_4_5
and after_save):
# Make a copy, removing ID and UUID. It's most likely invalid
and after_save):
# Make a copy, removing ID and UUID. It's most likely invalid
A set of parameters to filter the task list with.
"""
A set of parameters to filter the task list with.
"""
- def __init__(self, warrior, filter_params=[] ):
- self.filter_params = filter_params
+ def __init__(self, warrior, filter_params=None ):
+ self.filter_params = filter_params or []
super(TaskFilter, self).__init__(warrior)
def add_filter(self, filter_str):
super(TaskFilter, self).__init__(warrior)
def add_filter(self, filter_str):
# We enforce equality match by using 'is' (or 'none') modifier
# Without using this syntax, filter fails due to TW-1479
# We enforce equality match by using 'is' (or 'none') modifier
# Without using this syntax, filter fails due to TW-1479
- modifier = '.is' if value else '.none'
- key = key + modifier if '.' not in key else key
+ # which is, however, fixed in 2.4.5
+ if self.warrior.version < VERSION_2_4_5:
+ modifier = '.is' if value else '.none'
+ key = key + modifier if '.' not in key else key
self.filter_params.append(six.u("{0}:{1}").format(key, value))
self.filter_params.append(six.u("{0}:{1}").format(key, value))
self.tasks = TaskQuerySet(self)
self.tasks = TaskQuerySet(self)
- def _get_command_args(self, args, config_override={} ):
+ def _get_command_args(self, args, config_override=None ):
command_args = ['task', 'rc:{0}'.format(self.taskrc_location)]
config = self.config.copy()
command_args = ['task', 'rc:{0}'.format(self.taskrc_location)]
config = self.config.copy()
- config.update(config_override)
+ config.update(config_override or dict() )
for item in config.items():
command_args.append('rc.{0}={1}'.format(*item))
command_args.extend(map(six.text_type, args))
for item in config.items():
command_args.append('rc.{0}={1}'.format(*item))
command_args.extend(map(six.text_type, args))
- def execute_command(self, args, config_override={} , allow_failure=True,
+ def execute_command(self, args, config_override=None , allow_failure=True,
return_all=False):
command_args = self._get_command_args(
args, config_override=config_override)
return_all=False):
command_args = self._get_command_args(
args, config_override=config_override)