public inbox for [email protected]
help / color / mirror / Atom feedFrom: Aditya Toshniwal <[email protected]>
To: pgadmin-hackers <[email protected]>
Subject: [pgAdmin][RM6837] Foreign key issues in edit mode
Date: Mon, 4 Oct 2021 14:07:18 +0530
Message-ID: <CAM9w-_=cFuPtGz1+6O1PGHCU=G6TSDfy1a_pW7-GZ6reswJQHg@mail.gmail.com> (raw)
Hi Hackers,
Attached patch fixes:
1. Couple of foreign key issues in edit mode. Fixes #6837
2. Table "Of type" related issues. Fixes #6825
Please review.
--
Thanks,
Aditya Toshniwal
pgAdmin Hacker | Software Architect | *edbpostgres.com*
<http://edbpostgres.com;
"Don't Complain about Heat, Plant a TREE"
Attachments:
[application/octet-stream] RM6837_6825.patch (8.1K, 3-RM6837_6825.patch)
download | inline diff:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.ui.js
index e1d64ac1a..aaf53dbf4 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.ui.js
@@ -22,7 +22,7 @@ export default class CheckConstraintSchema extends BaseUISchema {
if(_.isUndefined(this.nodeInfo)) {
return true;
}
- return _.isUndefined(this.nodeInfo['table']);
+ return _.isUndefined(this.nodeInfo['check_constraint']);
}
isReadonly(state) {
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.ui.js
index 5f64e58cd..e405c0ac9 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.ui.js
@@ -213,7 +213,7 @@ export default class ExclusionConstraintSchema extends BaseUISchema {
if(_.isUndefined(this.nodeInfo)) {
return true;
}
- return _.isUndefined(this.nodeInfo['table']);
+ return _.isUndefined(this.nodeInfo['exclusion_constraint']);
}
initialise(data) {
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.ui.js
index 5c10d077d..979b70706 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.ui.js
@@ -149,7 +149,7 @@ export default class ForeignKeySchema extends BaseUISchema {
if(_.isUndefined(nodeInfo)) {
return true;
}
- return _.isUndefined(nodeInfo['table']);
+ return _.isUndefined(nodeInfo['foreign_key']);
}
changeColumnOptions(columns) {
@@ -222,12 +222,14 @@ export default class ForeignKeySchema extends BaseUISchema {
id: 'convalidated', label: gettext('Validated?'),
type: 'switch', group: gettext('Definition'),
readonly: (state)=>{
- // If we are in table edit mode then
- if(obj.inTable && obj.top && !obj.top.isNew()) {
- return !(_.isUndefined(state.oid) || !state.convalidated);
- }
- if(!obj.isNew(state) && obj.origData.convalidated) {
- return true;
+ if(!obj.isNew(state)) {
+ let origData = {};
+ if(obj.inTable && obj.top) {
+ origData = _.find(obj.top.origData['foreign_key'], (r)=>r.cid == state.cid);
+ } else {
+ origData = obj.origData;
+ }
+ return origData.convalidated;
}
return false;
},
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.ui.js
index 8eb67b2cb..52e2ca5a4 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.ui.js
@@ -31,7 +31,7 @@ export default class PrimaryKeySchema extends BaseUISchema {
if(_.isUndefined(this.nodeInfo)) {
return true;
}
- return _.isUndefined(this.nodeInfo['table']);
+ return _.isUndefined(this.nodeInfo['primary_key']);
}
changeColumnOptions(columns) {
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.ui.js
index 7b91a0b5e..0bdc30719 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.ui.js
@@ -32,7 +32,7 @@ export default class UniqueConstraintSchema extends BaseUISchema {
if(_.isUndefined(this.nodeInfo)) {
return true;
}
- return _.isUndefined(this.nodeInfo['table']);
+ return _.isUndefined(this.nodeInfo['unique_constraint']);
}
changeColumnOptions(columns) {
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js
index 68d1eed93..3344be5d8 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js
@@ -650,7 +650,12 @@ export default class TableSchema extends BaseUISchema {
obj.changeColumnOptions(finalCols);
return {
columns: finalCols,
- primary_key: []
+ primary_key: [],
+ foreign_key: [],
+ exclude_constraint: [],
+ unique_constraint: [],
+ partition_keys: [],
+ partitions: [],
};
});
};
diff --git a/web/regression/javascript/schema_ui_files/foreign_key.ui.spec.js b/web/regression/javascript/schema_ui_files/foreign_key.ui.spec.js
index 7f0928b2b..0bd8c0f94 100644
--- a/web/regression/javascript/schema_ui_files/foreign_key.ui.spec.js
+++ b/web/regression/javascript/schema_ui_files/foreign_key.ui.spec.js
@@ -171,7 +171,7 @@ describe('ForeignKeySchema', ()=>{
let state = {columns: [{local_column: 'id'}]};
let actionObj = {oldState:{name: 'fkname'}};
- schemaObj.nodeInfo = {table: {}};
+ schemaObj.nodeInfo = {foreign_key: {}};
state.autoindex = true;
state.name = 'fkname';
expect(getFieldDepChange(schemaObj, 'autoindex')(state, null, null, actionObj)).toEqual({
@@ -197,7 +197,7 @@ describe('ForeignKeySchema', ()=>{
expect(getFieldDepChange(schemaObj, 'autoindex')(state, null, null, actionObj)).toEqual({});
state.oid = null;
- schemaObj.nodeInfo = {};
+ schemaObj.nodeInfo = {table: {}};
schemaObj.top = schemaObj;
expect(getFieldDepChange(schemaObj, 'autoindex')(state, null, null, actionObj)).toEqual({
autoindex: false,
diff --git a/web/regression/javascript/schema_ui_files/table.ui.spec.js b/web/regression/javascript/schema_ui_files/table.ui.spec.js
index c686e8d86..0ddf9accd 100644
--- a/web/regression/javascript/schema_ui_files/table.ui.spec.js
+++ b/web/regression/javascript/schema_ui_files/table.ui.spec.js
@@ -172,6 +172,11 @@ describe('TableSchema', ()=>{
expect(depChange()).toEqual({
columns: oftypeColumns,
primary_key: [],
+ foreign_key: [],
+ exclude_constraint: [],
+ unique_constraint: [],
+ partition_keys: [],
+ partitions: [],
});
expect(schemaObj.changeColumnOptions).toHaveBeenCalledWith(oftypeColumns);
done();
@@ -208,6 +213,11 @@ describe('TableSchema', ()=>{
expect(depChange()).toEqual({
columns: oftypeColumns,
primary_key: [],
+ foreign_key: [],
+ exclude_constraint: [],
+ unique_constraint: [],
+ partition_keys: [],
+ partitions: [],
});
expect(schemaObj.changeColumnOptions).toHaveBeenCalledWith(oftypeColumns);
done();
view thread (2+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected]
Subject: Re: [pgAdmin][RM6837] Foreign key issues in edit mode
In-Reply-To: <CAM9w-_=cFuPtGz1+6O1PGHCU=G6TSDfy1a_pW7-GZ6reswJQHg@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox