def _select_tasklist(self): # selects tasklist, assigns to TASKLIST_NAME userid, creds = util.load_session_credentials(self) tasks_service = util.create_service('tasks', 'v1', creds) tasklist_id = self.request.get('select') logging.info("select") logging.info(self.request.get('select')) if tasklist_id == '': return "Please select a tasklist before trying to add it." else: #set name/id to db my_tasklist = TasklistStore(owner=self.userid) my_tasklist.my_id = tasklist_id #TASKLIST_NAMES.append(tasklist_title) tasklists = tasks_service.tasklists().list().execute() for tasklist in tasklists['items']: if tasklist_id == tasklist['id']: my_tasklist.my_name = tasklist['title'] #TASKLIST_IDS[tasklist_title] = tasklist['id'] my_tasklist.put() return my_tasklist.my_name + " selected successfully"
def _new_tasklist(self): userid, creds = util.load_session_credentials(self) tasks_service = util.create_service('tasks', 'v1', creds) mirror_service = util.create_service('mirror', 'v1', creds) logging.info('Inserting timeline items') # Note that icons will not show up when making counters on a # locally hosted web interface. #mirror_service = util.create_service('mirror', 'v1', creds) #tasks_service = util.create_service('tasks', 'v1', creds) ############################ TASKS API STUFF ####### # create empty task list @glass if none selected or none exist #q = db.GqlQuery("SELECT * FROM TasklistStore " + # "WHERE owner = " + userid) q = TasklistStore.all() q.filter("owner = ",self.userid) q.run() #if no tasklists, insert a default one if q: logging.info('not inserting') else: logging.info('no tasklist selected, inserting @glass ') tasklist = { 'title': '@glass' } result = tasks_service.tasklists().insert(body=tasklist).execute() my_tasklist = TasklistStore(owner = userid, my_name = tasklist_title, my_id = result['id']) my_tasklist.put() ## now for each selected tasklist, post tasks to timeline for p in q: tasklist_id = p.my_id tasklist_name = p.my_name # insert seed tasks task = { 'title': 'Glass interface synced to this list!', 'notes': 'Try adding a new task with the voice command!' } result = tasks_service.tasks().insert(tasklist=tasklist_id, body=task).execute() # grab all the tasks in tasklist to display result = tasks_service.tasks().list(tasklist=tasklist_id).execute() #filter out completed tasks tasks = [] for i, task in enumerate(result['items']): if task['status'] != 'completed': tasks.append(task) #grabbing all tasks now instead of just 5 #indx = 5 if len(tasks) > 4 else len(tasks) #tasks = tasks[0:indx] if len(tasks) == 0: tasks.append({'title': 'No tasks!'}) #render html # new_fields = { # 'list_title': tasklist_name, # 'tasks': tasks # } body = { 'notification': {'level': 'DEFAULT'}, 'title': tasklist_id, #secret way of stashing the tasklist id in the timeline item 'html': get_html_from_tasks(tasks_service, tasklist_id, tasklist_name), 'menuItems': [ { 'action': 'REPLY', 'id': 'create_task', 'values': [{ 'displayName': 'New Task', 'iconUrl': util.get_full_url(self, '/static/images/new_task.png')}] }, { 'action': 'CUSTOM', 'id': 'refresh', 'values': [{ 'displayName': 'Refresh', 'iconUrl': util.get_full_url(self, '/static/images/refresh2.png')}] }, {'action': 'TOGGLE_PINNED'}, {'action': 'DELETE'} ] } # custom_item_fields.set_multiple(body, new_fields, TIMELINE_ITEM_TEMPLATE_URL) # self.mirror_service is initialized in util.auth_required. # add card to timeline try: result = self.mirror_service.timeline().insert(body=body).execute() if result: item_id = result['id'] # logging.info('mainhandler about to defer') # deferred.defer(auto_refresh, creds, mirror_service, tasks_service, item_id, tasklist_name, tasklist_id, True) # logging.info('mainhandler deferred') except errors.HttpError, error: logging.info ('an error has occured %s ', error)