def api_update_resource(self): resultMessage = {} try: current_user = users.get_current_user() creds = build_creds.build_credentials( scope=[ "https://apps-apis.google.com/a/feeds/calendar/resource/" ], service_account_name=oauth_config['client_email'], private_key=oauth_config['private_key'], user=oauth_config['default_user'] ) auth2token = CreateToken(creds) client = CalendarResourceClient(domain=oauth_config['domain']) auth2token.authorize(client) resource = json.loads(self.request.body) logging.info('json_resource_update_result: %s' % resource) check_resource = client.GetResource(resource_id=resource['resourceId']) check_result = self.components.calendars.find_resource(str(check_resource)) logging.info( 'OLD: %s | CHECK: %s ' % (resource['old_resourceCommonName'], check_result[0]['resourceCommonName'])) if resource['old_resourceCommonName'] != check_result[0]['resourceCommonName']: return 402 if 'resourceDescription' not in resource: resource['resourceDescription'] = '' else: resource['resourceDescription'] client.UpdateResource( resource_id=resource['resourceId'], resource_common_name=resource['resourceCommonName'], resource_description=resource['resourceDescription'], resource_type=resource['resourceType']) logging.info('calendar_resource_name: %s' % resource['resourceCommonName']) calendar_resource_email = client.GetResource(resource_id=resource['resourceId']) logging.info('calendar_resource_email: %s' % calendar_resource_email) res = self.components.calendars.find_resource(str(calendar_resource_email)) logging.info('resource_update_result: %s' % res) resultMessage['message'] = 'The app is in the process of updating the calendar.' resultMessage['items'] = res self.context['data'] = resultMessage resource['new_email'] = res[0]['resourceEmail'] sharded = "sharded" + ("1" if int(time.time()) % 2 == 0 else "2") deferred.defer(self.process_update_resource, resource, current_user.email(), _queue=sharded) except urllib2.HTTPError as e: logging.info('get_all_events: HTTPerror') logging.info(e) if e.code == 401: pass
class CalendarResourceSample(object): def __init__(self, domain, email, password): """Constructor for the CalendarResourceSample object. Construct a CalendarResourceSample with the given args. Args: domain: The domain name ("domain.com") email: The email account of the user or the admin ("*****@*****.**") password: The domain admin's password """ self.client = CalendarResourceClient(domain=domain) self.client.ClientLogin(email=email, password=password, source='googlecode-calendarresourcesample-v1') def create(self, resource_properties): """Creates a calendar resource with the given resource_properties Args: resource_properties: A dictionary of calendar resource properties """ print 'Creating a new calendar resource with id %s...' % ( resource_properties['resource_id']) print self.client.CreateResource( resource_id=resource_properties['resource_id'], resource_common_name=resource_properties['resource_name'], resource_description=resource_properties['resource_description'], resource_type=resource_properties['resource_type']) def get(self, resource_id=None): """Retrieves the calendar resource with the given resource_id Args: resource_id: The optional calendar resource identifier """ if resource_id: print 'Retrieving the calendar resource with id %s...' % ( resource_id) print self.client.GetResource(resource_id=resource_id) else: print 'Retrieving all calendar resources...' print self.client.GetResourceFeed() def update(self, resource_properties): """Updates the calendar resource with the given resource_properties Args: resource_properties: A dictionary of calendar resource properties """ print 'Updating the calendar resource with id %s...' % ( resource_properties['resource_id']) print self.client.UpdateResource( resource_id=resource_properties['resource_id'], resource_common_name=resource_properties['resource_name'], resource_description=resource_properties['resource_description'], resource_type=resource_properties['resource_type']) def delete(self, resource_id): """Deletes the calendar resource with the given resource_id Args: resource_id: The unique calendar resource identifier """ print 'Deleting the calendar resource with id %s...' % (resource_id) self.client.DeleteResource(resource_id) print 'Calendar resource successfully deleted.'