59 lines
2.2 KiB
Python
59 lines
2.2 KiB
Python
from pycen import con_bdcen,con_fon as con
|
|
import geopandas as gpd
|
|
from sqlalchemy import create_engine, text
|
|
|
|
|
|
user_cad = 'cgeier' # utilisateur de connexion à la bdd
|
|
pwd_cad = 'adm1n*bdCen' # mot de passe de la bdd
|
|
adr_cad = '91.134.194.221' # adresse ip de la bdd
|
|
port_cad = '5432' # port de la bdd
|
|
base_cad = 'cadastre' # nom de la bdd
|
|
schema_cad = '07_202307'
|
|
con_cad = create_engine('postgresql+psycopg2://{0}:{1}@{2}:{3}/{4}'.format(user_cad,pwd_cad,adr_cad,port_cad,base_cad), echo=False)
|
|
|
|
|
|
def get_list_table(con,sch):
|
|
return con.dialect.get_table_names(con,schema=sch)
|
|
|
|
def get_list_view(con,sch):
|
|
return con.dialect.get_view_names(con,schema=sch)
|
|
|
|
def get_table_pkey(con,sch,tab):
|
|
return con.dialect.get_foreign_keys(con,tab,sch)['constrained_columns']
|
|
|
|
def grant_all_table(con,sch):
|
|
# sch = 'cadastre'
|
|
sql = 'GRANT USAGE ON SCHEMA "%s" TO grp_consult;'%sch
|
|
with con.begin() as cnx:
|
|
cnx.execute(sql)
|
|
print('GRANT USAGE TO grp_consult FOR SCHEMA "%s"'%(sch))
|
|
for tab in get_list_table(con,sch):
|
|
sql = 'GRANT SELECT ON TABLE "%s".%s TO grp_consult;'%(sch,tab)
|
|
with con.begin() as cnx:
|
|
cnx.execute(sql)
|
|
print('GRANT SELECT TO grp_consult FOR "%s".%s'%(sch,tab))
|
|
for tab in get_list_view(con,sch):
|
|
sql = 'GRANT SELECT ON TABLE "%s".%s TO grp_consult;'%(sch,tab)
|
|
with con.begin() as cnx:
|
|
cnx.execute(sql)
|
|
print('GRANT SELECT TO grp_consult FOR "%s".%s'%(sch,tab))
|
|
|
|
|
|
|
|
def revoke_all_table(con,sch):
|
|
for tab in get_list_table(con,sch):
|
|
sql = 'REVOKE SELECT ON "%s".%s FROM grp_consult;'%(sch,tab)
|
|
with con.begin() as cnx:
|
|
cnx.execute(sql)
|
|
print('REVOKE SELECT grp_consult FOR "%s".%s'%(sch,tab))
|
|
|
|
for tab in get_list_view(con,sch):
|
|
sql = 'REVOKE SELECT ON "%s".%s TO grp_consult;'%(sch,tab)
|
|
with con.begin() as cnx:
|
|
cnx.execute(sql)
|
|
print('REVOKE SELECT TO grp_consult FOR "%s".%s'%(sch,tab))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
grant_all_table(con_cad,schema_cad)
|
|
# revoke_all_table(con,base_cad) |