3434from pgadmin .tools .schema_diff .node_registry import SchemaDiffRegistry
3535from pgadmin .browser .server_groups .servers .utils import \
3636 (is_valid_ipaddress , get_replication_type , convert_connection_parameter ,
37- check_ssl_fields )
37+ check_ssl_fields , get_db_restriction )
3838from pgadmin .utils .constants import UNAUTH_REQ , MIMETYPE_APP_JS , \
39- SERVER_CONNECTION_CLOSED
39+ SERVER_CONNECTION_CLOSED , RESTRICTION_TYPE_SQL
4040from sqlalchemy import or_
4141from sqlalchemy .orm .attributes import flag_modified
4242from pgadmin .utils .preferences import Preferences
@@ -746,6 +746,7 @@ def update(self, gid, sid):
746746 'comment' : 'comment' ,
747747 'role' : 'role' ,
748748 'db_res' : 'db_res' ,
749+ 'db_res_type' : 'db_res_type' ,
749750 'passexec_cmd' : 'passexec_cmd' ,
750751 'passexec_expiration' : 'passexec_expiration' ,
751752 'bgcolor' : 'bgcolor' ,
@@ -776,12 +777,11 @@ def update(self, gid, sid):
776777 'role' : gettext ('Role' )
777778 }
778779
779- idx = 0
780780 data = request .form if request .form else json .loads (
781781 request .data
782782 )
783783
784- if 'db_res' in data :
784+ if 'db_res' in data and isinstance ( data [ 'db_res' ], list ) :
785785 data ['db_res' ] = ',' .join (data ['db_res' ])
786786
787787 # Update connection parameter if any.
@@ -948,7 +948,7 @@ def list(self, gid):
948948 'connected' : connected ,
949949 'version' : manager .ver ,
950950 'server_type' : manager .server_type if connected else 'pg' ,
951- 'db_res' : server .db_res . split ( ',' ) if server .db_res else None
951+ 'db_res' : get_db_restriction ( server .db_res_type , server .db_res )
952952 })
953953
954954 return ajax_response (
@@ -1031,7 +1031,8 @@ def properties(self, gid, sid):
10311031 'server_type' : manager .server_type if connected else 'pg' ,
10321032 'bgcolor' : server .bgcolor ,
10331033 'fgcolor' : server .fgcolor ,
1034- 'db_res' : server .db_res .split (',' ) if server .db_res else None ,
1034+ 'db_res' : get_db_restriction (server .db_res_type , server .db_res ),
1035+ 'db_res_type' : server .db_res_type ,
10351036 'passexec_cmd' :
10361037 server .passexec_cmd if server .passexec_cmd else None ,
10371038 'passexec_expiration' :
@@ -1137,6 +1138,12 @@ def create(self, gid):
11371138 data ['connection_params' ] = connection_params
11381139
11391140 server = None
1141+ db_restriction = None
1142+ if 'db_res' in data and isinstance (data ['db_res' ], list ):
1143+ db_restriction = ',' .join (data ['db_res' ])
1144+ elif 'db_res' in data and 'db_res_type' in data and \
1145+ data ['db_res_type' ] == RESTRICTION_TYPE_SQL :
1146+ db_restriction = data ['db_res' ]
11401147
11411148 try :
11421149 server = Server (
@@ -1151,8 +1158,8 @@ def create(self, gid):
11511158 config .ALLOW_SAVE_PASSWORD else 0 ,
11521159 comment = data .get ('comment' , None ),
11531160 role = data .get ('role' , None ),
1154- db_res = ',' . join ( data [ 'db_res' ]) if 'db_res' in data and
1155- isinstance ( data [ 'db_res' ], list ) else None ,
1161+ db_res = db_restriction ,
1162+ db_res_type = data . get ( 'db_res_type' , None ) ,
11561163 bgcolor = data .get ('bgcolor' , None ),
11571164 fgcolor = data .get ('fgcolor' , None ),
11581165 service = data .get ('service' , None ),
0 commit comments