def drop(self, master_pwd, name): try: dispatch_rpc('db', 'drop', [master_pwd, name]) request._cr = None # dropping a database leads to an unusable cursor return http.local_redirect('/web/v2/manager') except Exception as e: error = "Database deletion error: %s" % (str(e) or repr(e)) return self._render_template(error=error)
def duplicate(self, master_pwd, name, new_name): try: dispatch_rpc('db', 'duplicate_database', [master_pwd, name, new_name]) return http.local_redirect('/web/database/manager') except Exception, e: error = "Database duplication error: %s" % e return self._render_template(error=error)
def delete(self): master_pwd = odoo.tools.config['admin_passwd'] name = self.name try: http.dispatch_rpc('db', 'drop', [master_pwd, name]) self.write({'state': 'init'}) except Exception, e: error = "Database deletion error: %s" % str(e) or repr(e)
def change_password(self, master_pwd, master_pwd_new): try: dispatch_rpc('db', 'change_admin_password', [master_pwd, master_pwd_new]) return http.local_redirect('/web/v2/manager') except Exception as e: error = "Master password update error: %s" % (str(e) or repr(e)) return self._render_template(error=error)
def database_create(self, database_name, admin_login, admin_password, master_password="******", lang="en_US", **kw): if not re.match(DBNAME_PATTERN, database_name): raise exceptions.BadRequest(_('Invalid database name.')) http.dispatch_rpc('db', 'create_database', [ master_password, database_name, bool(kw.get('demo')), lang, admin_password, admin_login, kw.get('country_code') or False]) return Response(json.dumps(True), content_type='application/json;charset=utf-8', status=200)
def restore(self, master_pwd, backup_file, name, copy=False): try: data = base64.b64encode(backup_file.read()) dispatch_rpc('db', 'restore', [master_pwd, name, data, str2bool(copy)]) return http.local_redirect('/web/database/manager') except Exception, e: error = "Database restore error: %s" % e return self._render_template(error=error)
def duplicate(self, master_pwd, name, new_name): try: if not re.match(DBNAME_PATTERN, new_name): raise Exception( _('Invalid database name. Only alphanumerical characters, underscore, hyphen and dot are allowed.' )) dispatch_rpc('db', 'duplicate_database', [master_pwd, name, new_name]) return http.local_redirect('/web/v2/manager') except Exception as e: error = "Database duplication error: %s" % (str(e) or repr(e)) return self._render_template(error=error)
def database_duplicate(self, database_old, database_new, master_password="******", **kw): if not re.match(DBNAME_PATTERN, database_new): raise exceptions.BadRequest(_('Invalid database name.')) http.dispatch_rpc('db', 'duplicate_database', [master_password, database_old, database_new]) return Response(json.dumps(True), content_type='application/json;charset=utf-8', status=200)
def create(self, master_pwd, name, lang, password, **post): try: # country code could be = "False" which is actually True in python country_code = post.get('country_code') or False dispatch_rpc('db', 'create_database', [ master_pwd, name, bool(post.get('demo')), lang, password, post['login'], country_code ]) request.session.authenticate(name, post['login'], password) return http.local_redirect('/web/') except Exception, e: error = "Database creation error: %s" % e
def auth(self): master_pwd = odoo.tools.config['admin_passwd'] name, demo, lang, password, login = self.name, self.demo, 'en_US', SUPERPWD, SUPERLOGIN country_code = self.country.code or False try: # creating database http.dispatch_rpc('db', 'create_database', [ master_pwd, name, bool(demo), lang, password, login, country_code ]) # uploading users in database self.update_usr() # Assign module to database self.update_mod() self.write({'state': 'live'}) except Exception, e: error = "Database creation error: %s" % str(e) or repr(e)
def create(self, master_pwd, name, lang, password, **post): try: if not re.match(DBNAME_PATTERN, name): raise Exception( _('Invalid database name. Only alphanumerical characters, underscore, hyphen and dot are allowed.' )) # country code could be = "False" which is actually True in python country_code = post.get('country_code') or False dispatch_rpc('db', 'create_database', [ master_pwd, name, bool(post.get('demo')), lang, password, post['login'], country_code ]) request.session.authenticate(name, post['login'], password) return http.local_redirect('/web/') except Exception as e: error = "Database creation error: %s" % (str(e) or repr(e)) return self._render_template(error=error)
def test_exp_database_rename_clone_delete(self): database = common.get_db_name() dispatch_rpc('db', 'create_database', [ MASTER_PASSWORD, "muk_dms_file_create_db_test", False, "en", "admin", "admin" ]) self.assertTrue('muk_dms_file_create_db_test' in db_list()) dispatch_rpc('db', 'duplicate_database', [ MASTER_PASSWORD, 'muk_dms_file_create_db_test', 'muk_dms_file_duplicate_db_test' ]) self.assertTrue('muk_dms_file_duplicate_db_test' in db_list()) dispatch_rpc('db', 'drop', [MASTER_PASSWORD, 'muk_dms_file_duplicate_db_test']) dispatch_rpc('db', 'drop', [MASTER_PASSWORD, 'muk_dms_file_create_db_test']) self.assertTrue('muk_dms_file_create_db_test' not in db_list()) self.assertTrue('muk_dms_file_duplicate_db_test' not in db_list())
def test_exp_database_backup_restore(self): dispatch_rpc('db', 'create_database', [ MASTER_PASSWORD, "muk_dms_file_create_db_test", False, "en", "admin", "admin" ]) self.assertTrue('muk_dms_file_create_db_test' in db_list()) dump_stream = dump_db("muk_dms_file_create_db_test", None, 'zip') with tempfile.NamedTemporaryFile(delete=False) as data_file: data_file.write(dump_stream.read()) restore_db('muk_dms_file_restore_db_test', data_file.name, True) self.assertTrue('muk_dms_file_restore_db_test' in db_list()) dispatch_rpc('db', 'drop', [MASTER_PASSWORD, 'muk_dms_file_restore_db_test']) dispatch_rpc('db', 'drop', [MASTER_PASSWORD, 'muk_dms_file_create_db_test']) self.assertTrue('muk_dms_file_create_db_test' not in db_list()) self.assertTrue('muk_dms_file_restore_db_test' not in db_list())
def jsonrpc(self, service, method, args): """ Method used by client APIs to contact OpenERP. """ return dispatch_rpc(service, method, args)
def _xmlrpc(self, service): """Common method to handle an XML-RPC request.""" data = request.httprequest.get_data() params, method = loads(data) result = dispatch_rpc(service, method, params) return dumps((result, ), methodresponse=1, allow_none=False)
def change_password(self, password_new, password_old="admin", **kw): http.dispatch_rpc('db', 'change_admin_password', [password_old, password_new]) return Response(json.dumps(True), content_type='application/json;charset=utf-8', status=200)
def database_drop(self, database_name, master_password="******", **kw): http.dispatch_rpc('db', 'drop', [master_password, database_name]) request._cr = None return Response(json.dumps(True), content_type='application/json;charset=utf-8', status=200)
def _xmlrpc(self, service): """Common method to handle an XML-RPC request.""" data = request.httprequest.get_data() params, method = loads(data) result = dispatch_rpc(service, method, params) return dumps((result,), methodresponse=1, allow_none=False)