52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
from pycen import con_bdcen,con_cad,con_fon as con
|
|
import geopandas as gpd
|
|
from sqlalchemy import create_engine, text
|
|
|
|
|
|
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 FROM 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__":
|
|
sch_cad = '38_202501'
|
|
sch_old = '42_202207'
|
|
grant_all_table(con_cad,sch_cad)
|
|
# revoke_all_table(con_cad,sch_old) |