X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/1f6c62230e5c793208600818fad26b4f19710e56..d6732e2b96e9f646510985b780d86c667b5eb879:/tasklib/task.py diff --git a/tasklib/task.py b/tasklib/task.py index 56cda19..23f9277 100644 --- a/tasklib/task.py +++ b/tasklib/task.py @@ -19,6 +19,8 @@ VERSION_2_1_0 = six.u('2.1.0') VERSION_2_2_0 = six.u('2.2.0') VERSION_2_3_0 = six.u('2.3.0') VERSION_2_4_0 = six.u('2.4.0') +VERSION_2_4_1 = six.u('2.4.1') +VERSION_2_4_2 = six.u('2.4.2') logger = logging.getLogger(__name__) local_zone = tzlocal.get_localzone() @@ -702,7 +704,7 @@ class TaskFilter(SerializingObject): attribute_key = key.split('.')[0] # Since this is user input, we need to normalize before we serialize - value = self._normalize(key, value) + value = self._normalize(attribute_key, value) value = self._serialize(attribute_key, value) # If we are filtering by uuid:, do not use uuid keyword @@ -840,8 +842,15 @@ class TaskQuerySet(object): class TaskWarrior(object): - def __init__(self, data_location='~/.task', create=True): + def __init__(self, data_location='~/.task', create=True, taskrc_location='~/.taskrc'): data_location = os.path.expanduser(data_location) + self.taskrc_location = os.path.expanduser(taskrc_location) + + # If taskrc does not exist, pass / to use defaults and avoid creating + # dummy .taskrc file by TaskWarrior + if not os.path.exists(self.taskrc_location): + self.taskrc_location = '/' + if create and not os.path.exists(data_location): os.makedirs(data_location) self.config = { @@ -854,7 +863,7 @@ class TaskWarrior(object): self.version = self._get_version() def _get_command_args(self, args, config_override={}): - command_args = ['task', 'rc:/'] + command_args = ['task', 'rc:{0}'.format(self.taskrc_location)] config = self.config.copy() config.update(config_override) for item in config.items(): @@ -888,9 +897,10 @@ class TaskWarrior(object): def enforce_recurrence(self): # Run arbitrary report command which will trigger generation # of recurrent tasks. - # TODO: Make a version dependant enforcement once - # TW-1531 is handled - self.execute_command(['next'], allow_failure=False) + + # Only necessary for TW up to 2.4.1, fixed in 2.4.2. + if self.version < VERSION_2_4_2: + self.execute_command(['next'], allow_failure=False) def filter_tasks(self, filter_obj): self.enforce_recurrence()