]>
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:
DATE_FORMAT = '%Y%m%dT%H%M%SZ'
REPR_OUTPUT_SIZE = 10
PENDING = 'pending'
DATE_FORMAT = '%Y%m%dT%H%M%SZ'
REPR_OUTPUT_SIZE = 10
PENDING = 'pending'
logger = logging.getLogger(__name__)
logger = logging.getLogger(__name__)
def __init__(self, warrior, data={}):
self.warrior = warrior
self._data = data
def __init__(self, warrior, data={}):
self.warrior = warrior
self._data = data
self._modified_fields = set()
def __unicode__(self):
self._modified_fields = set()
def __unicode__(self):
def pending(self):
return self.filter(status=PENDING)
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.
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)
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),
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)
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()]
- 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')
raise TaskWarriorException(error_msg)
return stdout.strip().split('\n')
tasks = []
for line in self.execute_command(args):
if line:
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):
return tasks
def merge_with(self, path, push=False):