[Merge] Merged with latest branch.
authornoz (OpenERP) <noz@tinyerp.com>
Mon, 18 Jul 2011 05:30:05 +0000 (11:00 +0530)
committernoz (OpenERP) <noz@tinyerp.com>
Mon, 18 Jul 2011 05:30:05 +0000 (11:00 +0530)
bzr revid: noz@tinyerp.com-20110718053005-40qxjjeybb9xv294

1  2 
addons/base/controllers/main.py
addons/base/static/src/base.html
addons/base/static/src/css/base.css
addons/base/static/src/js/chrome.js
addons/base/static/src/xml/base.xml

@@@ -67,104 -62,11 +67,104 @@@ class Database(openerpweb.Controller)
          proxy = req.session.proxy("db")
          dbs = proxy.list()
          h = req.httprequest.headers['Host'].split(':')[0]
-         d = h.split(':')[0]
+         d = h.split('.')[0]
 -        r = cherrypy.config['openerp.dbfilter'].replace('%h',h).replace('%d',d)
 -        print "h,d",h,d,r
 -        dbs = [i for i in dbs if re.match(r,i)]
 +        r = cherrypy.config['openerp.dbfilter'].replace('%h', h).replace('%d', d)
 +        dbs = [i for i in dbs if re.match(r, i)]
          return {"db_list": dbs}
 +    
 +    @openerpweb.jsonrequest
 +    def db_operation(self, req, flag, **kw):
 +        
 +        if flag == 'create':
 +            
 +            super_admin_pwd = kw.get('super_admin_pwd')
 +            dbname = kw.get('db') 
 +            demo_data = kw.get('demo_data')
 +            db_lang = kw.get('db_lang')
 +            admin_pwd = kw.get('admin_pwd')
 +            confirm_pwd = kw.get('confirm_pwd')
 +            
 +            if not re.match('^[a-zA-Z][a-zA-Z0-9_]+$', dbname):
 +                return {'error': "You must avoid all accents, space or special characters.", 'title': 'Bad database name'}
 +            
 +            ok = False
 +            try:
 +                return req.session.proxy("db").create(super_admin_pwd, dbname, demo_data, db_lang, admin_pwd)
 +#                while True:
 +#                    try:
 +#                        progress, users = req.session.proxy('db').get_progress(super_admin_pwd, res)
 +#                        if progress == 1.0:
 +#                            for x in users:
 +#                                if x['login'] == 'admin':
 +#                                    req.session.login(dbname, 'admin', x['password'])
 +#                                    ok = True
 +#                            break
 +#                        else:
 +#                            time.sleep(1)
 +#                    except:
 +#                        raise DatabaseCreationCrash()
 +#            except DatabaseCreationCrash:
 +#                return {'error': "The server crashed during installation.\nWe suggest you to drop this database.",
 +#                        'title': 'Error during database creation'}
 +            except Exception, e:
 +                if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
 +                    return {'error': 'Bad super admin password !', 'title': 'Create Database'}
 +                else:
 +                    return {'error': 'Could not create database !', 'title': 'Create Database'}
 +        
 +        elif flag == 'drop':
 +            db = kw.get('db')
 +            password = kw.get('password')
 +            
 +            try:
 +                return req.session.proxy("db").drop(password, db)
 +            except Exception, e:
 +                if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
 +                    return {'error': 'Bad super admin password !', 'title': 'Drop Database'}
 +                else:
 +                    return {'error': 'Could not drop database !', 'title': 'Drop Database'}
 +        
 +        elif flag == 'backup':
 +            db = kw.get('db')
 +            password = kw.get('password')
 +            try:
 +                res = req.session.proxy("db").dump(password, db)
 +                if res:
 +                    cherrypy.response.headers['Content-Type'] = "application/data"
 +                    cherrypy.response.headers['Content-Disposition'] = 'filename="' + db + '.dump"'
 +                    return base64.decodestring(res)
 +            except Exception, e:
 +                if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
 +                    return {'error': 'Bad super admin password !', 'title': 'Backup Database'}
 +                else:
 +                    return {'error': 'Could not drop database !', 'title': 'Backup Database'}
 +            
 +        elif flag == 'restore':
 +            filename = kw.get('filename')
 +            db = kw.get('db')
 +            password = kw.get('password')
 +            
 +            try:
 +                data = base64.encodestring(filename.file.read())
 +                return req.session.proxy("db").restore(password, db, data)
 +            except Exception, e:
 +                if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
 +                    return {'error': 'Bad super admin password !', 'title': 'Restore Database'}
 +                else:
 +                    return {'error': 'Could not restore database !', 'title': 'Restore Database'}
 +        
 +        elif flag == 'change_password':
 +            old_password = kw.get('old_password')
 +            new_password = kw.get('new_password')
 +            confirm_password = kw.get('confirm_password')
 +            
 +            try:
 +                return req.session.proxy("db").change_admin_password(old_password, new_password)
 +            except Exception, e:
 +                if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
 +                    return {'error': 'Bad super admin password !', 'title': 'Change Password'}
 +                else:
 +                    return {'error': 'Error, password not changed !', 'title': 'Change Password'}
  
  class Session(openerpweb.Controller):
      _cp_path = "/base/session"
Simple merge
Simple merge
Simple merge
Simple merge