]> 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:

The next version will be 0.7.1
[etc/taskwarrior.git] / tasklib / task.py
index 01a0bcc6760bfb3c8f87bfeff8b262afdbc8b8c4..b6c3d09168ec6897749ade2c2d4ce26ceebf2b33 100644 (file)
@@ -372,8 +372,11 @@ class Task(TaskResource):
 
         def add_field(field):
             # Add the output of format_field method to args list (defaults to
-            # field:value)
-            format_default = lambda k: "{0}:'{1}'".format(k, self._data[k] or '')
+            # field:'value')
+            format_default = lambda k: "{0}:{1}".format(k,
+                                           "'{0}'".format(self._data[k])
+                                           if self._data[k] is not None
+                                           else '')
             format_func = getattr(self, 'format_{0}'.format(field),
                                   lambda: format_default(field))
             args.append(format_func())
@@ -433,7 +436,15 @@ class TaskFilter(SerializingObject):
         if key == 'uuid':
             self.filter_params.insert(0, value)
         else:
-            self.filter_params.append("{0}:'{1}'".format(key, value))
+            # Surround value with aphostrophes unless it's a empty string
+            value = "'%s'" % value if value else ''
+
+            # 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
+
+            self.filter_params.append("{0}:{1}".format(key, value))
 
     def get_filter_params(self):
         return [f for f in self.filter_params if f]
@@ -562,6 +573,7 @@ class TaskWarrior(object):
         self.config = {
             'data.location': os.path.expanduser(data_location),
             'confirmation': 'no',
+            'dependency.confirmation': 'no', # See TW-1483 or taskrc man page
         }
         self.tasks = TaskQuerySet(self)
         self.version = self._get_version()