Hi,

PFA patch for issue RM 1313.

Changes: Added connect now option in server create dialog.


-- 
*Harshal Dhumal*
*Software Engineer*

EnterpriseDB India: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
diff --git a/web/pgadmin/browser/server_groups/servers/__init__.py b/web/pgadmin/browser/server_groups/servers/__init__.py
index 6f3453b..8f4a0dd 100644
--- a/web/pgadmin/browser/server_groups/servers/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/__init__.py
@@ -576,14 +576,50 @@ class ServerNode(PGChildNodeView):
             db.session.add(server)
             db.session.commit()
 
+            connected = False
+            icon = "icon-server-not-connected"
+            user = None
+
+            if 'connect_now' in data and data['connect_now']:
+                if 'password' not in data or data["password"] == '':
+                    db.session.delete(server)
+                    db.session.commit()
+                    raise Exception("No password provided.")
+
+                password = data['password']
+                password = encrypt(password, current_user.password)
+
+                from pgadmin.utils.driver import get_driver
+                manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(server.id)
+                conn = manager.connection()
+
+                status, errmsg = conn.connect(
+                        password=password,
+                        server_types=ServerType.types()
+                        )
+
+                if not status:
+                    db.session.delete(server)
+                    db.session.commit()
+                    return make_json_response(
+                        status=401,
+                        success=0,
+                        errormsg=gettext("Unable to connect to server.")
+                    )
+                else:
+                    user = manager.user_info
+                    connected = True
+                    icon = "icon-pg"
+
             return jsonify(
                     node=self.blueprint.generate_browser_node(
-                        "%d" % (server.id), server.servergroup_id,
+                        "%d" % server.id, server.servergroup_id,
                         server.name,
-                        "icon-server-not-connected",
+                        icon,
                         True,
                         self.node_type,
-                        connected=False,
+                        user=user,
+                        connected=connected,
                         server_type='pg'  # Default server type
                         )
                     )
@@ -593,7 +629,7 @@ class ServerNode(PGChildNodeView):
             return make_json_response(
                 status=410,
                 success=0,
-                errormsg=e.message
+                errormsg=str(e)
             )
 
     def sql(self, gid, sid):
diff --git a/web/pgadmin/browser/server_groups/servers/templates/servers/servers.js b/web/pgadmin/browser/server_groups/servers/templates/servers/servers.js
index d1c1cd3..8c0d01f 100644
--- a/web/pgadmin/browser/server_groups/servers/templates/servers/servers.js
+++ b/web/pgadmin/browser/server_groups/servers/templates/servers/servers.js
@@ -586,7 +586,9 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
           port: 5432,
           db: 'postgres',
           username: '{{ username }}',
-          role: null
+          role: null,
+          connect_now: true,
+          password: undefined
         },
         // Default values!
         initialize: function(attrs, args) {
@@ -623,6 +625,15 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
           id: 'version', label:'{{ _('Version') }}', type: 'text', group: null,
           mode: ['properties'], visible: 'isConnected'
         },{
+          id: 'connect_now', controlLabel:'{{ _('Connect now?') }}', type: 'checkbox',
+          group: null, mode: ['create']
+        },{
+          id: 'password', label:'{{ _('Password') }}', type: 'password',
+          group: null, control: 'input', mode: ['create'], deps: ['connect_now'],
+          visible: function(m) {
+            return m.get('connect_now') && m.isNew();
+          }
+        },{
           id: 'comment', label:'{{ _('Comments') }}', type: 'multiline', group: null,
           mode: ['properties', 'edit', 'create']
         },{
@@ -676,6 +687,15 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
             self.errorModel.unset('id');
           }
           check_for_empty('name', '{{ _('Name must be specified.') }}');
+
+          if(self.get('connect_now')) {
+            check_for_empty(
+              'password', '{{ _('Password must be specified.') }}'
+            );
+          } else {
+            self.errorModel.unset('password');
+          }
+
           check_for_empty(
             'host', '{{ _('Hostname or address must be specified.') }}'
           );
diff --git a/web/pgadmin/static/css/overrides.css b/web/pgadmin/static/css/overrides.css
index 41ffde0..616db5c 100755
--- a/web/pgadmin/static/css/overrides.css
+++ b/web/pgadmin/static/css/overrides.css
@@ -1344,3 +1344,7 @@ height: calc(100% - 35px);
 .pg-panel-statistics-container > table > thead > tr > th:last-child {
   border-right: 0px;
 }
+
+.pgadmin-controls input[type="checkbox"]{
+  margin-left: 0 !important;
+}
\ No newline at end of file
-- 
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers

Reply via email to