Paginate project list. See #42224645733437

This commit is contained in:
2015-07-22 22:47:07 -07:00
parent 155a259f37
commit a610f5cac3
2 changed files with 31 additions and 11 deletions

View File

@@ -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={

28
ui.py
View File

@@ -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':