def _new_counter(self): """Insert a timeline item.""" logging.info('Inserting timeline item') # Note that icons will not show up when making counters on a # locally hosted web interface. body = { 'notification': {'level': 'DEFAULT'}, 'menuItems': [ { 'action': 'CUSTOM', 'id': 'increment', 'values': [{ 'displayName': 'Increment', 'iconUrl': util.get_full_url( self, '/static/images/up.png')}] }, { 'action': 'CUSTOM', 'id': 'decrement', 'values': [{ 'displayName': 'Decrement', 'iconUrl': util.get_full_url( self, '/static/images/down.png')}] }, { 'action': 'CUSTOM', 'id': 'reset', 'values': [{ 'displayName': 'Set Counter to 0', 'iconUrl': util.get_full_url( self, '/static/images/reset.png')}] }, {'action': 'SHARE'}, {'action': 'TOGGLE_PINNED'}, {'action': 'DELETE'} ] } new_fields = { 'name': self.request.get('name'), 'num': util.get_num(self.request.get('num')) } custom_item_fields.set_multiple( body, new_fields, TIMELINE_ITEM_TEMPLATE_URL) # self.mirror_service is initialized in util.auth_required. self.mirror_service.timeline().insert(body=body).execute() # Subscribe to timeline notifications if not yet subscribed. A # subscription should have been made during initial OAuth grant # but user could have unsubscribed via /subscription for debugging. try: self._subscribe() except HttpError: return ( 'A counter was made but ' 'Notifications were not enabled because an HTTP Error occured. ' 'A common cause of this problem is not using an HTTPS connection.' ) return 'A new counter has been created.'
def _update_counter(self): """Updates the counter to user input for given timeline item.""" item = self.mirror_service.timeline().get( id=self.request.get('itemId')).execute() new_fields = { 'name': self.request.get('name'), 'num': util.get_num(self.request.get('num')) } custom_item_fields.set_multiple( item, new_fields, TIMELINE_ITEM_TEMPLATE_URL) if 'notification' in item: item.pop('notification') self.mirror_service.timeline().update( id=self.request.get('itemId'), body=item).execute() return 'Counter Updated'