mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Greenplum specific DDL and Dashboard display changes.
Initial patch by Sarah McAlear<smcalear@pivotal.io>.
This commit is contained in:
@@ -0,0 +1 @@
|
||||
Some default SQL for GPDB
|
||||
@@ -23,7 +23,10 @@ class TestVersionedTemplateLoader(BaseTestGenerator):
|
||||
("Render a version 9.1 template when it is present", dict(scenario=2)),
|
||||
("Render a version 9.2 template when request for a higher version", dict(scenario=3)),
|
||||
("Render default version when version 9.0 was requested and only 9.1 and 9.2 are present", dict(scenario=4)),
|
||||
("Raise error when version is smaller than available templates", dict(scenario=5))
|
||||
("Raise error when version is smaller than available templates", dict(scenario=5)),
|
||||
("Render a version GPDB 5.0 template when it is present", dict(scenario=6)),
|
||||
("Render a version GPDB 5.0 template when it is in default", dict(scenario=7)),
|
||||
("Raise error when version is gpdb but template does not exist", dict(scenario=8))
|
||||
]
|
||||
|
||||
def setUp(self):
|
||||
@@ -40,6 +43,12 @@ class TestVersionedTemplateLoader(BaseTestGenerator):
|
||||
self.test_get_source_when_version_is_9_0_and_there_are_templates_for_9_1_and_9_2_returns_default_template()
|
||||
if self.scenario == 5:
|
||||
self.test_raise_not_found_exception_when_postgres_version_less_than_all_available_sql_templates()
|
||||
if self.scenario == 6:
|
||||
self.test_get_source_when_the_version_is_gpdb_5_0_returns_gpdb_5_0_template()
|
||||
if self.scenario == 7:
|
||||
self.test_get_source_when_the_version_is_gpdb_5_0_returns_default_template()
|
||||
if self.scenario == 8:
|
||||
self.test_raise_not_found_exception_when_the_version_is_gpdb_template_not_exist()
|
||||
|
||||
def test_get_source_returns_a_template(self):
|
||||
expected_content = "Some SQL" \
|
||||
@@ -86,6 +95,31 @@ class TestVersionedTemplateLoader(BaseTestGenerator):
|
||||
except TemplateNotFound:
|
||||
return
|
||||
|
||||
def test_get_source_when_the_version_is_gpdb_5_0_returns_gpdb_5_0_template(self):
|
||||
expected_content = "Some default SQL for GPDB\n"
|
||||
# For cross platform we join the SQL path (This solves the slashes issue)
|
||||
sql_path = os.path.join("some_feature", "sql", "gpdb_5.0_plus", "some_action_with_gpdb_5_0.sql")
|
||||
content, filename, up_to_dateness = self.loader.get_source(None, "some_feature/sql/#gpdb#80323#/some_action_with_gpdb_5_0.sql")
|
||||
|
||||
self.assertEqual(expected_content, str(content).replace("\r", ""))
|
||||
self.assertIn(sql_path, filename)
|
||||
|
||||
def test_get_source_when_the_version_is_gpdb_5_0_returns_default_template(self):
|
||||
expected_content = "Some default SQL"
|
||||
# For cross platform we join the SQL path (This solves the slashes issue)
|
||||
sql_path = os.path.join("some_feature", "sql", "default", "some_action_with_default.sql")
|
||||
content, filename, up_to_dateness = self.loader.get_source(None, "some_feature/sql/#gpdb#80323#/some_action_with_default.sql")
|
||||
|
||||
self.assertEqual(expected_content, str(content).replace("\r", ""))
|
||||
self.assertIn(sql_path, filename)
|
||||
|
||||
def test_raise_not_found_exception_when_the_version_is_gpdb_template_not_exist(self):
|
||||
try:
|
||||
self.loader.get_source(None, "some_feature/sql/#gpdb#50100#/some_action.sql")
|
||||
self.fail("No exception raised")
|
||||
except TemplateNotFound:
|
||||
return
|
||||
|
||||
|
||||
class FakeApp(Flask):
|
||||
def __init__(self):
|
||||
|
||||
@@ -13,9 +13,9 @@ from jinja2 import TemplateNotFound
|
||||
|
||||
class VersionedTemplateLoader(DispatchingJinjaLoader):
|
||||
def get_source(self, environment, template):
|
||||
template_path_parts = template.split("#", 2)
|
||||
template_path_parts = template.split("#", 3)
|
||||
|
||||
server_versions = (
|
||||
postgres_versions = (
|
||||
{'name': "10_plus", 'number': 100000},
|
||||
{'name': "9.6_plus", 'number': 90600},
|
||||
{'name': "9.5_plus", 'number': 90500},
|
||||
@@ -27,18 +27,29 @@ class VersionedTemplateLoader(DispatchingJinjaLoader):
|
||||
{'name': "default", 'number': 0}
|
||||
)
|
||||
|
||||
gpdb_versions = (
|
||||
{'name': "gpdb_5.0_plus", 'number': 80323},
|
||||
{'name': "default", 'number': 0}
|
||||
)
|
||||
|
||||
server_versions = postgres_versions
|
||||
if len(template_path_parts) == 1:
|
||||
return super(VersionedTemplateLoader, self).get_source(environment, template)
|
||||
|
||||
if len(template_path_parts) == 4:
|
||||
path_start, server_type, specified_version_number, file_name = template_path_parts
|
||||
if server_type == 'gpdb':
|
||||
server_versions = gpdb_versions
|
||||
else:
|
||||
for server_version in server_versions:
|
||||
path_start, specified_version_number, file_name = template_path_parts
|
||||
path_start, specified_version_number, file_name = template_path_parts
|
||||
|
||||
if server_version['number'] > int(specified_version_number):
|
||||
continue
|
||||
for server_version in server_versions:
|
||||
if server_version['number'] > int(specified_version_number):
|
||||
continue
|
||||
|
||||
template_path = path_start + '/' + server_version['name'] + '/' + file_name
|
||||
try:
|
||||
return super(VersionedTemplateLoader, self).get_source(environment, template_path)
|
||||
except TemplateNotFound:
|
||||
continue
|
||||
raise TemplateNotFound(template)
|
||||
template_path = path_start + '/' + server_version['name'] + '/' + file_name
|
||||
try:
|
||||
return super(VersionedTemplateLoader, self).get_source(environment, template_path)
|
||||
except TemplateNotFound:
|
||||
continue
|
||||
raise TemplateNotFound(template)
|
||||
|
||||
Reference in New Issue
Block a user