mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Ensure that the submenus under the trigger's context menu are enabled/disabled correctly. #5627
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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) => {
|
||||||
|
|||||||
@@ -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
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
SELECT count(*) FROM pg_catalog.pg_trigger WHERE tgrelid={{tid}} AND tgisinternal = FALSE AND tgenabled = 'O'
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
SELECT count(*) FROM pg_catalog.pg_trigger WHERE tgrelid={{tid}} AND tgisinternal = FALSE AND tgenabled = 'O'
|
||||||
@@ -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:
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user