DATE_FORMAT = '%Y%m%dT%H%M%SZ'
REPR_OUTPUT_SIZE = 10
PENDING = 'pending'
+COMPLETED = 'completed'
logger = logging.getLogger(__name__)
def __init__(self, warrior, data={}):
self.warrior = warrior
self._data = data
- print data
self._modified_fields = set()
def __unicode__(self):
def pending(self):
return self.filter(status=PENDING)
+ def completed(self):
+ return self.filter(status=COMPLETED)
+
def filter(self, *args, **kwargs):
"""
Returns a new TaskQuerySet with the given filters added.
class TaskWarrior(object):
def __init__(self, data_location='~/.task', create=True):
data_location = os.path.expanduser(data_location)
- if not os.path.exists(data_location):
+ if create and not os.path.exists(data_location):
os.makedirs(data_location)
self.config = {
'data.location': os.path.expanduser(data_location),
logger.debug(' '.join(command_args))
p = subprocess.Popen(command_args, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
- stdout, stderr = p.communicate()
+ stdout, stderr = [x.decode() for x in p.communicate()]
if p.returncode:
- error_msg = stderr.strip().splitlines()[-1]
+ if stderr.strip():
+ error_msg = stderr.strip().splitlines()[-1]
+ else:
+ error_msg = stdout.strip()
raise TaskWarriorException(error_msg)
return stdout.strip().split('\n')
tasks = []
for line in self.execute_command(args):
if line:
- tasks.append(Task(self, json.loads(line.strip(','))))
+ data = line.strip(',')
+ try:
+ tasks.append(Task(self, json.loads(data)))
+ except ValueError:
+ raise TaskWarriorException('Invalid JSON: %s' % data)
return tasks
def merge_with(self, path, push=False):