def postOptions(self): """Post options processing """ if ((self['user'] and self['global']) or (not self['user'] and not self['global'])): raise usage.UsageError( 'you must choose between `user` and `global` installations' ) if self['entry_points'] is not None: try: self['entry_points'] = json.loads(self['entry_points']) except ValueError: raise usage.UsageError('invalid JSON entry_points structure') if type(self['entry_points']) is not dict: raise usage.UsageError( 'the entry_points JSON string must be decoded as a dict' ) else: self['entry_points'] = {} if self['extra_directories'] is not None: try: self['extra_directories'] = json.loads( self['extra_directories'] ) except ValueError: raise usage.UsageError( 'invalid JSON extra_directories structure' ) if type(self['extra_directories']) is not list: raise usage.UsageError( 'the extra_directories JSON string ' 'must be decoded as a list' ) else: self['extra_directories'] = [] if self['author'] is None: self['author'] = getpass.getuser() if self['email'] is not None: if not Checkers.check_email(self['email']): print( 'error: the given email address {} is not a valid RFC2822 ' 'email address, ' 'check http://www.rfc-editor.org/rfc/rfc2822.txt for ' 'very extended details'.format(self['email']) ) sys.exit(-1) else: # just set an invalid RFC2822 email address (thats what irony mean) self['email'] = '{}@localhost'.format(self['author'])
def _parse_request_args(self, route): """Parses JSON data and request form if present """ data = self.request.content.read() data_json = {} if self.request.method in ['POST', 'PUT', 'PATCH']: ct = self.request.requestHeaders.getRawHeaders('content-type') try: if ct is not None and len( [h for h in ct if 'application/json' in h]) > 0: data_json = json.loads(data) self.request.json = data_json except ValueError: self.request.json = {} request_args = self.request.args request_headers = self.request.requestHeaders.getRawHeaders( 'content-type') if self.request.method == 'PUT' and request_headers: if 'application/x-www-form-urlencoded' in request_headers: request_args = parse_qs(data, 1) if len(request_args) > 0: for key, value in request_args.iteritems(): if key not in route.callback_args: route.callback_args.update( {key: value if len(value) > 1 else value[0]}) elif data_json: if type(data_json) is dict: for key, value in data_json.iteritems(): if key not in route.callback_args: route.callback_args.update({key: value})
def test_database_write(self): import os import sys import json currdir = os.getcwd() os.mkdir('tmp') os.chdir('./tmp') data = { 'uri': 'sqlite:', 'min_threads': 5, 'max_threads': 20, 'auto_adjust_pool_size': False, 'create_table_behaviours': { 'create_table_if_not_exists': True, 'drop_table': False }, 'drop_table_behaviours': { 'drop_if_exists': True, 'restrict': True, 'cascade': False } } config.Database().write(data) os.chdir(currdir) cfg_file = filepath.FilePath('./tmp/config/database.json') self.assertTrue(cfg_file.exists()) if not '__pypy__' in sys.modules: self.assertEqual(json.loads(cfg_file.open('r').read()), data) cfg_file.remove() os.rmdir('tmp/config') os.rmdir('tmp')
def test_dispatch_route_returns_json_on_models(self): StubController.test2 = routes_generator(DummyModel('Dummy')) request = request_generator(['/test2']) result = yield StubController().render(request) self.assertIsInstance(result, response.Ok) self.assertEqual(result.headers, {'content-type': 'application/json'}) self.assertEqual(json.loads(result.subject), { 'name': 'Dummy', 'id': None })
def _parse_request_args(self, route): """Parses JSON data and request form if present """ data = self.request.content.read() data_json = {} if self.request.method in ['POST', 'PUT', 'PATCH']: ct = self.request.requestHeaders.getRawHeaders('content-type') try: if ct is not None and len( [h for h in ct if 'application/json' in h]) > 0: data_json = json.loads(data) self.request.json = data_json except ValueError: self.request.json = {} request_args = self.request.args request_headers = self.request.requestHeaders.getRawHeaders( 'content-type' ) if self.request.method == 'PUT' and request_headers: if 'application/x-www-form-urlencoded' in request_headers: request_args = parse_qs(data, 1) if len(request_args) > 0: for key, value in request_args.iteritems(): if key not in route.callback_args: route.callback_args.update( {key: value if len(value) > 1 else value[0]} ) elif data_json: if type(data_json) is dict: for key, value in data_json.iteritems(): if key not in route.callback_args: route.callback_args.update({key: value})