Allow template databases to be used when creating new databases. Fixes #1570
parent
d5f6c63ead
commit
5690dfda16
|
@ -99,6 +99,7 @@ class DatabaseView(PGChildNodeView):
|
||||||
{'get': 'list', 'post': 'create'}
|
{'get': 'list', 'post': 'create'}
|
||||||
],
|
],
|
||||||
'nodes': [{'get': 'node'}, {'get': 'nodes'}],
|
'nodes': [{'get': 'node'}, {'get': 'nodes'}],
|
||||||
|
'get_databases': [{'get': 'get_databases'}, {'get': 'get_databases'}],
|
||||||
'sql': [{'get': 'sql'}],
|
'sql': [{'get': 'sql'}],
|
||||||
'msql': [{'get': 'msql'}, {'get': 'msql'}],
|
'msql': [{'get': 'msql'}, {'get': 'msql'}],
|
||||||
'stats': [{'get': 'statistics'}, {'get': 'statistics'}],
|
'stats': [{'get': 'statistics'}, {'get': 'statistics'}],
|
||||||
|
@ -170,11 +171,12 @@ class DatabaseView(PGChildNodeView):
|
||||||
status=200
|
status=200
|
||||||
)
|
)
|
||||||
|
|
||||||
@check_precondition(action="nodes")
|
def get_nodes(self, gid, sid, show_system_templates=False):
|
||||||
def nodes(self, gid, sid):
|
|
||||||
res = []
|
res = []
|
||||||
last_system_oid = 0 if self.blueprint.show_system_objects else \
|
last_system_oid = 0 if self.blueprint.show_system_objects or \
|
||||||
(self.manager.db_info[self.manager.did])['datlastsysoid']
|
show_system_templates else (
|
||||||
|
self.manager.db_info[self.manager.did]
|
||||||
|
)['datlastsysoid']
|
||||||
|
|
||||||
SQL = render_template(
|
SQL = render_template(
|
||||||
"/".join([self.template_path, 'nodes.sql']),
|
"/".join([self.template_path, 'nodes.sql']),
|
||||||
|
@ -213,6 +215,19 @@ class DatabaseView(PGChildNodeView):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
||||||
|
@check_precondition(action="nodes")
|
||||||
|
def nodes(self, gid, sid):
|
||||||
|
res = self.get_nodes(gid, sid)
|
||||||
|
return make_json_response(
|
||||||
|
data=res,
|
||||||
|
status=200
|
||||||
|
)
|
||||||
|
|
||||||
|
@check_precondition(action="get_databases")
|
||||||
|
def get_databases(self, gid, sid):
|
||||||
|
res = self.get_nodes(gid, sid, True)
|
||||||
return make_json_response(
|
return make_json_response(
|
||||||
data=res,
|
data=res,
|
||||||
status=200
|
status=200
|
||||||
|
|
|
@ -254,8 +254,26 @@ function($, _, S, pgAdmin, pgBrowser, Alertify) {
|
||||||
id: 'template', label: '{{ _('Template') }}',
|
id: 'template', label: '{{ _('Template') }}',
|
||||||
editable: false, type: 'text', group: 'Definition',
|
editable: false, type: 'text', group: 'Definition',
|
||||||
disabled: function(m) { return !m.isNew(); },
|
disabled: function(m) { return !m.isNew(); },
|
||||||
control: 'node-list-by-name', node: 'database', cache_level: 'server',
|
control: 'node-list-by-name', url: 'get_databases', cache_level: 'server',
|
||||||
select2: { allowClear: false }
|
select2: { allowClear: false },
|
||||||
|
transform: function(data, cell) {
|
||||||
|
var res = [],
|
||||||
|
control = cell || this,
|
||||||
|
label = control.model.get('name');
|
||||||
|
|
||||||
|
if (!control.model.isNew()) {
|
||||||
|
res.push({label: label, value: label});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (data && _.isArray(data)) {
|
||||||
|
_.each(data, function(d) {
|
||||||
|
res.push({label: d.label, value: d.label,
|
||||||
|
image: 'pg-icon-database'});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
},{
|
},{
|
||||||
id: 'spcname', label: '{{ _('Tablespace') }}',
|
id: 'spcname', label: '{{ _('Tablespace') }}',
|
||||||
editable: false, type: 'text', group: 'Definition',
|
editable: false, type: 'text', group: 'Definition',
|
||||||
|
|
Loading…
Reference in New Issue