[FIX] Validation for bad database name.
authornoz (OpenERP) <noz@tinyerp.com>
Wed, 13 Jul 2011 09:43:39 +0000 (15:13 +0530)
committernoz (OpenERP) <noz@tinyerp.com>
Wed, 13 Jul 2011 09:43:39 +0000 (15:13 +0530)
bzr revid: noz@tinyerp.com-20110713094339-1612ynj0dc40roo7

addons/base/controllers/main.py
addons/base/static/src/js/chrome.js

index 5657ef1..b5fc07c 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 import base64
-import glob, os
+import glob, os, re
 from xml.etree import ElementTree
 from cStringIO import StringIO
 
@@ -124,7 +124,16 @@ class Session(openerpweb.Controller):
     def db_operation(self, req, flag, **kw):
         
         if flag == 'create':
-            pass
+            
+            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'}
         
         elif flag == 'drop':
             db = kw.get('db')
@@ -134,9 +143,9 @@ class Session(openerpweb.Controller):
                 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 !'}
+                    return {'error': 'Bad super admin password !', 'title': 'Drop Database'}
                 else:
-                    return {'error': 'Could not drop database !'}
+                    return {'error': 'Could not drop database !', 'title': 'Drop Database'}
         
         elif flag == 'backup':
             db = kw.get('db')
@@ -149,9 +158,9 @@ class Session(openerpweb.Controller):
                     return base64.decodestring(res)
             except Exception, e:
                 if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
-                    return {'error': 'Bad super admin password !'}
+                    return {'error': 'Bad super admin password !', 'title': 'Backup Database'}
                 else:
-                    return {'error': 'Could not drop database !'}
+                    return {'error': 'Could not drop database !', 'title': 'Backup Database'}
             
         elif flag == 'restore':
             filename = kw.get('filename')
@@ -163,9 +172,9 @@ class Session(openerpweb.Controller):
                 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 !'}
+                    return {'error': 'Bad super admin password !', 'title': 'Restore Database'}
                 else:
-                    return {'error': 'Could not restore database !'}
+                    return {'error': 'Could not restore database !', 'title': 'Restore Database'}
         
         elif flag == 'change_password':
             old_password = kw.get('old_password')
@@ -176,9 +185,9 @@ class Session(openerpweb.Controller):
                 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 !'}
+                    return {'error': 'Bad super admin password !', 'title': 'Change Password'}
                 else:
-                    return {'error': 'Error, password not changed !'}
+                    return {'error': 'Error, password not changed !', 'title': 'Change Password'}
             
     @openerpweb.jsonrequest
     def modules(self, req):
index 98f0af5..9348686 100644 (file)
@@ -990,7 +990,7 @@ openerp.base.Database = openerp.base.Controller.extend({
                                var db_error_dialog = _.uniqueId("db_error_dialog");
                                $('<div>', {id: db_error_dialog}).dialog({
                                modal: true,
-                               title: "Create Database",
+                               title: result.title,
                                buttons: {
                                    Ok: function() {
                                        $(this).dialog("close");
@@ -1025,7 +1025,7 @@ openerp.base.Database = openerp.base.Controller.extend({
                                        var db_error_dialog = _.uniqueId("db_error_dialog");
                                $('<div>', {id: db_error_dialog}).dialog({
                                        modal: true,
-                                       title: "Drop Database",
+                                       title: result.title,
                                        buttons: {
                                            Ok: function() {
                                                $(this).dialog("close");
@@ -1059,7 +1059,7 @@ openerp.base.Database = openerp.base.Controller.extend({
                                var db_error_dialog = _.uniqueId("db_error_dialog");
                                $('<div>', {id: db_error_dialog}).dialog({
                                modal: true,
-                               title: "Backup Database",
+                               title: result.title,
                                buttons: {
                                    Ok: function() {
                                        $(this).dialog("close");
@@ -1093,7 +1093,7 @@ openerp.base.Database = openerp.base.Controller.extend({
                                var db_error_dialog = _.uniqueId("db_error_dialog");
                                $('<div>', {id: db_error_dialog}).dialog({
                                modal: true,
-                               title: "Restore Database",
+                               title: result.title,
                                buttons: {
                                    Ok: function() {
                                        $(this).dialog("close");
@@ -1148,7 +1148,7 @@ openerp.base.Database = openerp.base.Controller.extend({
                                        var db_error_dialog = _.uniqueId("db_error_dialog");
                                $('<div>', {id: db_error_dialog}).dialog({
                                        modal: true,
-                                       title: "Change Password",
+                                       title: result.title,
                                        buttons: {
                                            Ok: function() {
                                                $(this).dialog("close");