def post(self): """Handler for post requests to datastore_admin/copy.do. Jobs are executed and user is redirected to the get handler. """ namespace = self.request.get('namespace') kinds = self.request.get_all('kind') (namespace_str, kinds_str) = utils.GetPrintableStrs(namespace, kinds) token = self.request.get('xsrf_token') remote_url = self.request.get('remote_url') extra_header = self.request.get('extra_header') jobs = [] if not remote_url: parameters = [('error', 'Unspecified remote URL.')] elif not utils.ValidateXsrfToken(token, XSRF_ACTION): parameters = [('xsrf_error', '1')] else: try: if extra_header: extra_headers = dict([extra_header.split(':', 1)]) else: extra_headers = None target_app = remote_api_put_stub.get_remote_appid(remote_url, extra_headers) op = utils.StartOperation( 'Copying %s%s to %s' % (kinds_str, namespace_str, target_app)) name_template = 'Copy all %(kind)s objects%(namespace)s' mapper_params = { 'target_app': target_app, 'remote_url': remote_url, 'extra_header': extra_header, } jobs = utils.RunMapForKinds( op.key(), kinds, name_template, self.COPY_HANDLER, self.INPUT_READER, None, mapper_params) error = '' except Exception, e: logging.exception('Handling exception.') error = self._HandleException(e) parameters = [('job', job) for job in jobs] if error: parameters.append(('error', error))
def post(self): """Handler for post requests to datastore_admin/copy.do. Jobs are executed and user is redirected to the get handler. """ namespace = self.request.get('namespace') kinds = self.request.get_all('kind') (namespace_str, kinds_str) = utils.GetPrintableStrs(namespace, kinds) token = self.request.get('xsrf_token') remote_url = self.request.get('remote_url') extra_header = self.request.get('extra_header') jobs = [] if not remote_url: parameters = [('error', 'Unspecified remote URL.')] elif not utils.ValidateXsrfToken(token, XSRF_ACTION): parameters = [('xsrf_error', '1')] else: try: if extra_header: extra_headers = dict([extra_header.split(':', 1)]) else: extra_headers = None target_app = remote_api_put_stub.get_remote_appid(remote_url, extra_headers) op = utils.StartOperation( 'Copying %s%s to %s' % (kinds_str, namespace_str, target_app)) name_template = 'Copy all %(kind)s objects%(namespace)s' mapper_params = { 'target_app': target_app, 'remote_url': remote_url, 'extra_header': extra_header, } jobs = utils.RunMapForKinds( op.key(), kinds, name_template, self.COPY_HANDLER, self.INPUT_READER, None, mapper_params) error = '' except Exception, e: logging.exception('Handling exception.') error = self._HandleException(e) parameters = [('job', job) for job in jobs] if error: parameters.append(('error', error))
def testGetAppid(self): """Sueccessfully get an appid.""" remote_api_put_stub.random.random().AndReturn(float('0.%s' % self.rtok)) response = "{app_id: %s, rtok: !!python/unicode '%s'}" % ( self.app_id, self.rtok) remote_api_put_stub.urlfetch.fetch( self.remote_url + '?rtok=%s' % self.rtok, None, urlfetch.GET, {'X-appcfg-api-version': '1'}, follow_redirects=False ).AndReturn(MockUrlfetchResult(200, response)) self.mox.ReplayAll() self.assertEqual(self.app_id, remote_api_put_stub.get_remote_appid(self.remote_url, {}))
def testGetAppid(self): """Sueccessfully get an appid.""" remote_api_put_stub.random.random().AndReturn(float("0.%s" % self.rtok)) response = "{app_id: %s, rtok: !!python/unicode '%s'}" % (self.app_id, self.rtok) remote_api_put_stub.urlfetch.fetch( self.remote_url + "?rtok=%s" % self.rtok, None, urlfetch.GET, {"X-appcfg-api-version": "1"}, follow_redirects=False, ).AndReturn(MockUrlfetchResult(200, response)) self.mox.ReplayAll() self.assertEqual(self.app_id, remote_api_put_stub.get_remote_appid(self.remote_url, {}))