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 done(self):
- self.warrior.execute_comamnd([self['id'], 'done'])
+ self.warrior.execute_command([self['id'], 'done'])
def save(self):
args = [self['id'], 'modify'] if self['id'] else ['add']
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),
stderr=subprocess.PIPE)
stdout, stderr = 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):