Skip to content
This repository has been archived by the owner on Feb 21, 2022. It is now read-only.

Commit

Permalink
Make commit() not send seq_no, and get_by_id() to save object in loca…
Browse files Browse the repository at this point in the history
…l state.
  • Loading branch information
lefcha committed Feb 19, 2015
1 parent 1eec328 commit 53f499d
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 14 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def read(fname):

setup(
name='todoist-python',
version='0.2.1',
version='0.2.2',
packages=['todoist', 'todoist.managers'],
author='Doist Team',
author_email='info@todoist.com',
Expand Down
51 changes: 42 additions & 9 deletions todoist/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -261,19 +261,22 @@ def sync(self, commands=None, **kwargs):
fetches the latest updated data from the server.
"""
params = {
'seq_no': self._get_seq_no(kwargs.get('resource_types', None)),
'token': self.token,
'commands': json.dumps(commands or []),
'day_orders_timestamp': self.state['DayOrdersTimestamp'],
}
if not commands:
params['seq_no'] = self._get_seq_no(kwargs.get('resource_types',
None)),
if 'include_notification_settings' in kwargs:
params['include_notification_settings'] = 1
if 'resource_types' in kwargs:
params['resource_types'] = json.dumps(kwargs['resource_types'])
data = self._post('sync', params=params)
self._update_state(data)
self._update_seq_no(data.get('seq_no', None),
kwargs.get('resource_types', None))
if not commands:
self._update_seq_no(data.get('seq_no', None),
kwargs.get('resource_types', None))

return data

Expand Down Expand Up @@ -473,47 +476,77 @@ def get_project(self, project_id):
"""
params = {'token': self.token,
'project_id': project_id}
return self._get('get_project', params=params)
data = self._get('get_project', params=params)
obj = data.get('project', None)
if obj and 'error' not in obj:
self._update_state({'Projects': [obj]})
return obj
return None

def get_item(self, item_id):
"""
Gets an existing item.
"""
params = {'token': self.token,
'item_id': item_id}
return self._get('get_item', params=params)
data = self._get('get_item', params=params)
obj = data.get('item', None)
if obj and 'error' not in obj:
self._update_state({'Items': [obj]})
return obj
return None

def get_label(self, label_id):
"""
Gets an existing label.
"""
params = {'token': self.token,
'label_id': label_id}
return self._get('get_label', params=params)
data = self._get('get_label', params=params)
obj = data.get('label', None)
if obj and 'error' not in obj:
self._update_state({'Labels': [obj]})
return obj
return None

def get_note(self, note_id):
"""
Gets an existing note.
"""
params = {'token': self.token,
'note_id': note_id}
return self._get('get_note', params=params)
data = self._get('get_note', params=params)
obj = data.get('note', None)
if obj and 'error' not in obj:
self._update_state({'Notes': [obj]})
return obj
return None

def get_filter(self, filter_id):
"""
Gets an existing filter.
"""
params = {'token': self.token,
'filter_id': filter_id}
return self._get('get_filter', params=params)
data = self._get('get_filter', params=params)
obj = data.get('filter', None)
if obj and 'error' not in obj:
self._update_state({'Filters': [obj]})
return obj
return None

def get_reminder(self, reminder_id):
"""
Gets an existing reminder.
"""
params = {'token': self.token,
'reminder_id': reminder_id}
return self._get('get_reminder', params=params)
data = self._get('get_reminder', params=params)
obj = data.get('reminder', None)
if obj and 'error' not in obj:
self._update_state({'Reminders': [obj]})
return obj
return None

# Class
def __repr__(self):
Expand Down
5 changes: 1 addition & 4 deletions todoist/managers/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,6 @@ def get_by_id(self, obj_id, only_local=False):
return obj

if not only_local:
obj = eval('self.api.get_' + self.object_type)(obj_id)
if self.object_type in obj and \
'error' not in obj[self.object_type]:
return obj[self.object_type]
return eval('self.api.get_' + self.object_type)(obj_id)

return None

0 comments on commit 53f499d

Please sign in to comment.