2015-10-20 02:03:18 -05:00
|
|
|
from flask import current_app
|
|
|
|
from .registry import DriverRegistry
|
|
|
|
|
|
|
|
|
2016-01-02 03:24:01 -06:00
|
|
|
def get_driver(type, app=None):
|
|
|
|
|
|
|
|
if app is not None:
|
|
|
|
DriverRegistry.load_drivers()
|
|
|
|
|
|
|
|
drivers = getattr(app or current_app, '_pgadmin_server_drivers', None)
|
2015-10-20 02:03:18 -05:00
|
|
|
|
|
|
|
if drivers is None or not isinstance(drivers, dict):
|
|
|
|
drivers = dict()
|
|
|
|
|
|
|
|
if type in drivers:
|
|
|
|
return drivers[type]
|
|
|
|
|
|
|
|
driver = DriverRegistry.create(type)
|
|
|
|
|
|
|
|
if driver is not None:
|
|
|
|
drivers[type] = driver
|
2016-01-02 03:24:01 -06:00
|
|
|
setattr(app or current_app, '_pgadmin_server_drivers', drivers)
|
2015-10-20 02:03:18 -05:00
|
|
|
|
|
|
|
return driver
|
|
|
|
|
|
|
|
def init_app(app):
|
|
|
|
drivers = dict()
|
|
|
|
|
|
|
|
setattr(app, '_pgadmin_server_drivers', drivers)
|
|
|
|
DriverRegistry.load_drivers()
|
|
|
|
|
2016-01-02 03:24:01 -06:00
|
|
|
return drivers
|
|
|
|
|
2015-10-20 02:03:18 -05:00
|
|
|
|
|
|
|
def ping():
|
|
|
|
drivers = getattr(current_app, '_pgadmin_server_drivers', None)
|
|
|
|
|
|
|
|
for type in drivers:
|
|
|
|
drivers[type].gc()
|