Exemplo n.º 1
0
    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
Exemplo n.º 2
0
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.'