diff --git a/cmdasana.py b/cmdasana.py index 6ec98a8..bf91608 100755 --- a/cmdasana.py +++ b/cmdasana.py @@ -12,6 +12,9 @@ from oauthlib.oauth2.rfc6749.errors import TokenExpiredError import ui from secrets import CLIENT_ID, CLIENT_SECRET +# id of the personal projects domain +PERSONAL = 498346170860 + class CmdAsana: def __init__(self): try: @@ -56,8 +59,8 @@ class CmdAsana: import webbrowser webbrowser.open(url) except Exception: - print "Go to the following link and enter the code:" - print url + print("Go to the following link and enter the code:") + print(url) code = sys.stdin.readline().strip() token = self.client.session.fetch_token(code=code) @@ -92,8 +95,11 @@ class CmdAsana: }) def allMyProjects(self): - return self.client.projects.find_by_workspace(self.workspace_id, - page_size=None) + if self.workspace_id != PERSONAL: + return self.client.projects.find_by_workspace(self.workspace_id) + else: + return self.client.projects.find_by_workspace(self.workspace_id, + page_size=None) def projectTasks(self, project_id): return self.client.tasks.find_by_project(project_id, params={ diff --git a/ui.py b/ui.py index 717b6fd..ca6c912 100644 --- a/ui.py +++ b/ui.py @@ -12,7 +12,8 @@ palette = [ ('header', 'bold,light green', ''), ('task', 'light green', ''), ('section', 'white', 'dark green'), - ('workspace', 'white', 'dark blue') + ('workspace', 'white', 'dark blue'), + ('pager', 'standout', ''), ] class WorkspaceMenu(urwid.Columns): @@ -42,6 +43,11 @@ class WorkspaceButton(urwid.Button): super(WorkspaceButton, self).__init__(workspace['name']) urwid.connect_signal(self, 'click', onClick, workspace['id']) +class PagerButton(urwid.Button): + def __init__(self, loadPage): + super(PagerButton, self).__init__(('pager', 'load more')) + urwid.connect_signal(self, 'click', loadPage) + class ProjectIcon(urwid.SelectableIcon): def __init__(self, project, onClick): self.project = project @@ -58,16 +64,24 @@ class ProjectList(urwid.ListBox): def __init__(self, projects): self.projects = projects - project_widgets = [ProjectIcon(project, self.loadProject) - for project in projects] - body = urwid.SimpleFocusListWalker( [ProjectIcon({'name': 'My Tasks', 'id': None}, - self.loadProject)] + \ - project_widgets + self.loadProject), + None] ) - super(ProjectList, self).__init__(body) + self.loadPage() + + def loadPage(self, opt=None): + self.body.pop() + for i in range(50): + try: + self.body.append(ProjectIcon(self.projects.next(), + self.loadProject)) + except StopIteration: + return + + self.body.append(PagerButton(self.loadPage)) def keypress(self, size, key): if key == 'j':