X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/4156a5aba0241d879144e4791d9031a7d97c838a..9811f65b56e9bdb15722179e59c722de6713ffa2:/tasklib/task.py diff --git a/tasklib/task.py b/tasklib/task.py index de0443c..491a374 100644 --- a/tasklib/task.py +++ b/tasklib/task.py @@ -1,8 +1,10 @@ +from __future__ import print_function import copy import datetime import json import logging import os +import six import subprocess DATE_FORMAT = '%Y%m%dT%H%M%SZ' @@ -36,8 +38,14 @@ class TaskResource(object): self._data[key] = dehydrate_func(value) self._modified_fields.add(key) + def __str__(self): + s = six.text_type(self.__unicode__()) + if not six.PY3: + s = s.encode('utf-8') + return s + def __repr__(self): - return self.__unicode__() + return str(self) class TaskAnnotation(TaskResource): @@ -151,6 +159,10 @@ class TaskFilter(object): def add_filter_param(self, key, value): key = key.replace('__', '.') + + # Replace the value with empty string, since that is the + # convention in TW for empty values + value = value if value is not None else '' self.filter_params.append('{0}:{1}'.format(key, value)) def get_filter_params(self): @@ -297,7 +309,7 @@ class TaskWarrior(object): logger.debug(' '.join(command_args)) p = subprocess.Popen(command_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - stdout, stderr = [x.decode() for x in p.communicate()] + stdout, stderr = [x.decode('utf-8') for x in p.communicate()] if p.returncode: if stderr.strip(): error_msg = stderr.strip().splitlines()[-1]