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
7 changed files with 37 additions and 8 deletions

View File

@@ -1186,6 +1186,17 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
if not status: if not status:
return internal_server_error(errormsg=res) 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( return make_json_response(
success=1, success=1,
info=gettext("Trigger(s) have been disabled") info=gettext("Trigger(s) have been disabled")
@@ -1193,7 +1204,8 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
else gettext("Trigger(s) have been enabled"), else gettext("Trigger(s) have been enabled"),
data={ data={
'id': tid, '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) => { .then((res) => {
if (res.data.success === 1) { if (res.data.success === 1) {
Notify.success(res.data.info); Notify.success(res.data.info);
treeNode.data.has_enable_triggers = res.data.data.has_enable_triggers;
treeNode.reload(tree); treeNode.reload(tree);
} }
}) })
.catch((xhr) => { .catch((xhr) => {

View File

@@ -306,18 +306,17 @@ define('pgadmin.node.table', [
return getNodeTableSchema(treeNodeInfo, itemNodeData, pgBrowser); return getNodeTableSchema(treeNodeInfo, itemNodeData, pgBrowser);
}, },
// Check to whether table has disable trigger(s) // Check to whether table has disable trigger(s)
canCreate_with_trigger_enable: function(itemData, item, data) { canCreate_with_trigger_enable: function(itemData) {
return itemData.tigger_count > 0 && return itemData.tigger_count > 0 && (itemData.has_enable_triggers == 0 || itemData.has_enable_triggers < itemData.tigger_count);
this.canCreate.apply(this, [itemData, item, data]);
}, },
// Check to whether table has enable trigger(s) // Check to whether table has enable trigger(s)
canCreate_with_trigger_disable: function(itemData, item, data) { canCreate_with_trigger_disable: function(itemData) {
return itemData.tigger_count > 0 && itemData.has_enable_triggers > 0 && return itemData.tigger_count > 0 && itemData.has_enable_triggers > 0;
this.canCreate.apply(this, [itemData, item, data]);
}, },
onTableUpdated: function(_node, _oldNodeData, _newNodeData) { onTableUpdated: function(_node, _oldNodeData, _newNodeData) {
let key, childIDs; let key, childIDs;
if ( if (
_newNodeData.is_partitioned && _newNodeData.is_partitioned &&
'affected_partitions' in _newNodeData '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) data=o_data, conn=self.conn)
status, res = self.conn.execute_scalar(SQL) 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: if not status:
return internal_server_error(errormsg=res) return internal_server_error(errormsg=res)
@@ -941,7 +952,8 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
data={ data={
'id': trid, 'id': trid,
'tid': tid, 'tid': tid,
'scid': scid 'scid': scid,
'has_enable_triggers': trigger_res
} }
) )
except Exception as e: except Exception as e:

View File

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