Example #1
0
  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"
Example #2
0
  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)