mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Added support for mounting shared storage in server mode. #5014
This commit is contained in:
@@ -120,3 +120,6 @@ DATABASE_LAST_SYSTEM_OID = 16383
|
||||
# Drivers
|
||||
PSYCOPG2 = 'psycopg2'
|
||||
PSYCOPG3 = 'psycopg3'
|
||||
|
||||
# Shared storage
|
||||
MY_STORAGE = 'my_storage'
|
||||
|
||||
@@ -14,21 +14,32 @@ import os
|
||||
from flask import current_app, url_for
|
||||
from flask_security import current_user
|
||||
from werkzeug.exceptions import InternalServerError
|
||||
from pgadmin.utils.constants import MY_STORAGE
|
||||
|
||||
|
||||
def get_storage_directory(user=current_user):
|
||||
def get_storage_directory(user=current_user, shared_storage=''):
|
||||
import config
|
||||
if config.SERVER_MODE is not True:
|
||||
return None
|
||||
|
||||
storage_dir = getattr(
|
||||
config, 'STORAGE_DIR',
|
||||
os.path.join(
|
||||
os.path.realpath(
|
||||
os.path.expanduser('~/.pgadmin/')
|
||||
), 'storage'
|
||||
is_shared_storage = False
|
||||
if shared_storage != MY_STORAGE and shared_storage:
|
||||
is_shared_storage = True
|
||||
selectedDir = [sdir for sdir in config.SHARED_STORAGE if
|
||||
sdir['name'] == shared_storage]
|
||||
storage_dir = None
|
||||
if len(selectedDir) > 0:
|
||||
the_dir = selectedDir[0]['path']
|
||||
storage_dir = the_dir
|
||||
else:
|
||||
storage_dir = getattr(
|
||||
config, 'STORAGE_DIR',
|
||||
os.path.join(
|
||||
os.path.realpath(
|
||||
os.path.expanduser('~/.pgadmin/')
|
||||
), 'storage'
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
if storage_dir is None:
|
||||
return None
|
||||
@@ -55,12 +66,19 @@ def get_storage_directory(user=current_user):
|
||||
|
||||
username = _preprocess_username(user.username)
|
||||
|
||||
# Figure out the new style storage directory name
|
||||
storage_dir = os.path.join(
|
||||
storage_dir.decode('utf-8') if hasattr(storage_dir, 'decode')
|
||||
else storage_dir,
|
||||
username
|
||||
)
|
||||
if is_shared_storage:
|
||||
# Figure out the new style storage directory name
|
||||
storage_dir = os.path.join(
|
||||
storage_dir.decode('utf-8') if hasattr(storage_dir, 'decode')
|
||||
else storage_dir
|
||||
)
|
||||
else:
|
||||
# Figure out the new style storage directory name
|
||||
storage_dir = os.path.join(
|
||||
storage_dir.decode('utf-8') if hasattr(storage_dir, 'decode')
|
||||
else storage_dir,
|
||||
username
|
||||
)
|
||||
|
||||
# Rename an old-style storage directory, if the new style doesn't exist
|
||||
if os.path.exists(old_storage_dir) and not os.path.exists(storage_dir):
|
||||
|
||||
@@ -72,6 +72,7 @@ class _Preference():
|
||||
self.options = kwargs.get('options', None)
|
||||
self.select = kwargs.get('select', None)
|
||||
self.fields = kwargs.get('fields', None)
|
||||
self.hidden = kwargs.get('hidden', None)
|
||||
self.allow_blanks = kwargs.get('allow_blanks', None)
|
||||
self.disabled = kwargs.get('disabled', False)
|
||||
self.dependents = kwargs.get('dependents', None)
|
||||
@@ -262,6 +263,7 @@ class _Preference():
|
||||
'select': self.select,
|
||||
'value': self.get(),
|
||||
'fields': self.fields,
|
||||
'hidden': self.hidden,
|
||||
'disabled': self.disabled,
|
||||
'dependents': self.dependents
|
||||
}
|
||||
@@ -436,6 +438,7 @@ class Preferences():
|
||||
category_label = kwargs.get('category_label', None)
|
||||
select = kwargs.get('select', None)
|
||||
fields = kwargs.get('fields', None)
|
||||
hidden = kwargs.get('hidden', None)
|
||||
allow_blanks = kwargs.get('allow_blanks', None)
|
||||
disabled = kwargs.get('disabled', False)
|
||||
dependents = kwargs.get('dependents', None)
|
||||
@@ -457,7 +460,7 @@ class Preferences():
|
||||
min_val=min_val, max_val=max_val, options=options,
|
||||
select=select, fields=fields, allow_blanks=allow_blanks,
|
||||
disabled=disabled, dependents=dependents,
|
||||
control_props=control_props
|
||||
control_props=control_props, hidden=hidden
|
||||
)
|
||||
|
||||
return res
|
||||
|
||||
Reference in New Issue
Block a user