Ensure that the submenus under the trigger's context menu are enabled/disabled correctly. #5627

This commit is contained in:
Nikhil Mohite 2023-01-02 10:49:36 +05:30 committed by GitHub
parent acc26744e3
commit 64af035ce9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 37 additions and 8 deletions

View File

@ -1186,6 +1186,17 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
if not status:
return internal_server_error(errormsg=res)
SQL = render_template(
"/".join([
self.trigger_template_path, 'get_enabled_triggers.sql'
]),
tid=tid
)
status, trigger_res = self.conn.execute_scalar(SQL)
if not status:
return internal_server_error(errormsg=res)
return make_json_response(
success=1,
info=gettext("Trigger(s) have been disabled")
@ -1193,7 +1204,8 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
else gettext("Trigger(s) have been enabled"),
data={
'id': tid,
'scid': scid
'scid': scid,
'has_enable_triggers': trigger_res
}
)

View File

@ -29,7 +29,9 @@ function setTriggers(tree, Notify, generateUrl, args, params) {
.then((res) => {
if (res.data.success === 1) {
Notify.success(res.data.info);
treeNode.data.has_enable_triggers = res.data.data.has_enable_triggers;
treeNode.reload(tree);
}
})
.catch((xhr) => {

View File

@ -306,18 +306,17 @@ define('pgadmin.node.table', [
return getNodeTableSchema(treeNodeInfo, itemNodeData, pgBrowser);
},
// Check to whether table has disable trigger(s)
canCreate_with_trigger_enable: function(itemData, item, data) {
return itemData.tigger_count > 0 &&
this.canCreate.apply(this, [itemData, item, data]);
canCreate_with_trigger_enable: function(itemData) {
return itemData.tigger_count > 0 && (itemData.has_enable_triggers == 0 || itemData.has_enable_triggers < itemData.tigger_count);
},
// Check to whether table has enable trigger(s)
canCreate_with_trigger_disable: function(itemData, item, data) {
return itemData.tigger_count > 0 && itemData.has_enable_triggers > 0 &&
this.canCreate.apply(this, [itemData, item, data]);
canCreate_with_trigger_disable: function(itemData) {
return itemData.tigger_count > 0 && itemData.has_enable_triggers > 0;
},
onTableUpdated: function(_node, _oldNodeData, _newNodeData) {
let key, childIDs;
if (
_newNodeData.is_partitioned &&
'affected_partitions' in _newNodeData
) {

View File

@ -0,0 +1 @@
SELECT count(*) FROM pg_catalog.pg_trigger WHERE tgrelid={{tid}} AND tgisinternal = FALSE AND tgenabled = 'O'

View File

@ -0,0 +1 @@
SELECT count(*) FROM pg_catalog.pg_trigger WHERE tgrelid={{tid}} AND tgisinternal = FALSE AND tgenabled = 'O'

View File

@ -932,6 +932,17 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
data=o_data, conn=self.conn)
status, res = self.conn.execute_scalar(SQL)
if not status:
return internal_server_error(errormsg=res)
SQL = render_template(
"/".join([
self.template_path, 'get_enabled_triggers.sql'
]),
tid=tid
)
status, trigger_res = self.conn.execute_scalar(SQL)
if not status:
return internal_server_error(errormsg=res)
@ -941,7 +952,8 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
data={
'id': trid,
'tid': tid,
'scid': scid
'scid': scid,
'has_enable_triggers': trigger_res
}
)
except Exception as e:

View File

@ -123,6 +123,7 @@ define('pgadmin.node.trigger', [
t.unload(i);
t.setInode(false);
t.deselect(i);
i.parent.parent._metadata.data.has_enable_triggers = res.data.has_enable_triggers;
// Fetch updated data from server
setTimeout(function() {
t.select(i);
@ -161,6 +162,7 @@ define('pgadmin.node.trigger', [
t.unload(i);
t.setInode(false);
t.deselect(i);
i.parent.parent._metadata.data.has_enable_triggers = res.data.has_enable_triggers;
// Fetch updated data from server
setTimeout(function() {
t.select(i);