34
34
from pgadmin .tools .schema_diff .node_registry import SchemaDiffRegistry
35
35
from pgadmin .browser .server_groups .servers .utils import \
36
36
(is_valid_ipaddress , get_replication_type , convert_connection_parameter ,
37
- check_ssl_fields )
37
+ check_ssl_fields , get_db_restriction )
38
38
from pgadmin .utils .constants import UNAUTH_REQ , MIMETYPE_APP_JS , \
39
- SERVER_CONNECTION_CLOSED
39
+ SERVER_CONNECTION_CLOSED , RESTRICTION_TYPE_SQL
40
40
from sqlalchemy import or_
41
41
from sqlalchemy .orm .attributes import flag_modified
42
42
from pgadmin .utils .preferences import Preferences
@@ -746,6 +746,7 @@ def update(self, gid, sid):
746
746
'comment' : 'comment' ,
747
747
'role' : 'role' ,
748
748
'db_res' : 'db_res' ,
749
+ 'db_res_type' : 'db_res_type' ,
749
750
'passexec_cmd' : 'passexec_cmd' ,
750
751
'passexec_expiration' : 'passexec_expiration' ,
751
752
'bgcolor' : 'bgcolor' ,
@@ -776,12 +777,11 @@ def update(self, gid, sid):
776
777
'role' : gettext ('Role' )
777
778
}
778
779
779
- idx = 0
780
780
data = request .form if request .form else json .loads (
781
781
request .data
782
782
)
783
783
784
- if 'db_res' in data :
784
+ if 'db_res' in data and isinstance ( data [ 'db_res' ], list ) :
785
785
data ['db_res' ] = ',' .join (data ['db_res' ])
786
786
787
787
# Update connection parameter if any.
@@ -948,7 +948,7 @@ def list(self, gid):
948
948
'connected' : connected ,
949
949
'version' : manager .ver ,
950
950
'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 )
952
952
})
953
953
954
954
return ajax_response (
@@ -1031,7 +1031,8 @@ def properties(self, gid, sid):
1031
1031
'server_type' : manager .server_type if connected else 'pg' ,
1032
1032
'bgcolor' : server .bgcolor ,
1033
1033
'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 ,
1035
1036
'passexec_cmd' :
1036
1037
server .passexec_cmd if server .passexec_cmd else None ,
1037
1038
'passexec_expiration' :
@@ -1137,6 +1138,12 @@ def create(self, gid):
1137
1138
data ['connection_params' ] = connection_params
1138
1139
1139
1140
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' ]
1140
1147
1141
1148
try :
1142
1149
server = Server (
@@ -1151,8 +1158,8 @@ def create(self, gid):
1151
1158
config .ALLOW_SAVE_PASSWORD else 0 ,
1152
1159
comment = data .get ('comment' , None ),
1153
1160
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 ) ,
1156
1163
bgcolor = data .get ('bgcolor' , None ),
1157
1164
fgcolor = data .get ('fgcolor' , None ),
1158
1165
service = data .get ('service' , None ),
0 commit comments