def GetAllCalendarResources(self): if self.oauth2token is not None: client = CalendarResourceClient(domain='ums.ac.id') client.auth_token = self.oauth2token client.ssl = True return client.GetResourceFeed().entry else: return None
def api_list_resource(self, feed): data = {} 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) if feed == 'feed': calendar_resources = str(client.GetResourceFeed()) else: calendar_resources = str(client.GetResourceFeed( uri="https://apps-apis.google.com/a/feeds/calendar/resource/2.0/%s/?%s" % ( oauth_config['domain'], feed))) nextpage, res = self.components.calendars.find_resource(calendar_resources) data['items'] = res data['next'] = nextpage data['previous'] = None data['page'] = "start=%s" % res[0]['resourceId'] self.context['data'] = data
def GetCalendarResources(self, resource_id): if self.oauth2token is not None: client = CalendarResourceClient(domain='ums.ac.id') client.auth_token = self.oauth2token client.ssl = True return client.GetResource(resource_id=resource_id) else: return None
def DelCalendarResources(self, resource_id): if self.oauth2token is not None: client = CalendarResourceClient(domain='ums.ac.id') client.auth_token = self.oauth2token client.ssl = True client.DeleteResource(resource_id=resource_id) return True else: return False
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
def UpdateCalendarResources(self, resource_id, resource_common_name, resource_description, resource_email, resource_type): if self.oauth2token is not None: client = CalendarResourceClient(domain='ums.ac.id') client.auth_token = self.oauth2token client.ssl = True return client.UpdateResource( resource_id=resource_id, resource_common_name=resource_common_name, resource_description=resource_description, resource_email=resource_email, resource_type=resource_type) else: return False
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 list_resource_memcache(self): params = {} result = [] nextpage = None # client = CalendarResourceClient(domain=oauth_config['domain']) # client.ClientLogin(email=oauth_config['default_user'], password=oauth_config['password'], source=APP_ID) 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) while True: if nextpage: params['uri'] = nextpage calendar_resources = str(client.GetResourceFeed(**params)) nextpage, res = self.find_resource(calendar_resources) for resource in res: result.append(dict( (k, v) for k, v in resource.iteritems() )) if not nextpage: break sortedResource = sorted(result, key=lambda resource: resource['resourceCommonName']) memcache.add('resource_list', sortedResource, 600) return sortedResource
def api_create_resource(self): resultMessage = {} 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('create_resource: %s' % resource) try: resource['resourceId'] = generate_random_numbers(12) resource_list = memcache.get('resource_list') if resource_list is None: resource_list = self.components.calendars.list_resource_memcache() logging.info('resource_list: %s' % resource_list) for apiResource in resource_list: if apiResource['resourceCommonName'] == resource['resourceCommonName']: return 402 if 'resourceDescription' in resource: resourceDescription = resource['resourceDescription'] else: resourceDescription = None calendar_resource = client.CreateResource( resource_id=resource['resourceId'], resource_common_name=resource['resourceCommonName'], resource_description=resourceDescription, resource_type=resource['resourceType']) res = self.components.calendars.find_resource(str(calendar_resource)) logging.info('create_resource_result: %s' % res) action = 'A new Calendar Resource has been created' insert_audit_log( """A new Calendar Resource has been created. Resource ID: %s Resource Name: %s Resource Type: %s Resource Description: %s """ % ( resource['resourceId'], resource['resourceCommonName'], resource['resourceType'], resourceDescription), 'add new resource', current_user.email(), resource['resourceCommonName'], None, '') # AuditLogModel.new_resource_notification(config['email'], current_user.nickname(), resource) resultMessage['message'] = action resultMessage['items'] = res self.context['data'] = resultMessage except Exception as e: logging.info('create resource failed: %s' % e) return 406
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.'
def GetClient(): client = CalendarResourceClient(domain='ums.ac.id') client.ClientLogin(email=settings.GMAIL, password=settings.GPASS, source='apps') client.ssl = True return client