diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py index 829cec8f3..1048cf21d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py @@ -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 } ) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/enable_disable_triggers.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/enable_disable_triggers.js index 9e44c7662..e40c43317 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/enable_disable_triggers.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/enable_disable_triggers.js @@ -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) => { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js index 0f7aa670e..416814830 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js @@ -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 ) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/get_enabled_triggers.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/get_enabled_triggers.sql new file mode 100644 index 000000000..c24eda653 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/get_enabled_triggers.sql @@ -0,0 +1 @@ +SELECT count(*) FROM pg_catalog.pg_trigger WHERE tgrelid={{tid}} AND tgisinternal = FALSE AND tgenabled = 'O' diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/get_enabled_triggers.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/get_enabled_triggers.sql new file mode 100644 index 000000000..c24eda653 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/get_enabled_triggers.sql @@ -0,0 +1 @@ +SELECT count(*) FROM pg_catalog.pg_trigger WHERE tgrelid={{tid}} AND tgisinternal = FALSE AND tgenabled = 'O' diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py index 56f57b6ec..95542558e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py @@ -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: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js index 38aec6b57..2bb5f9263 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js @@ -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);