From aec64aa582c000bc25fd8f96160a922fca985ae2 Mon Sep 17 00:00:00 2001 From: Aditya Toshniwal Date: Fri, 24 Apr 2020 16:35:59 +0530 Subject: [PATCH] Fixed following issues for 1257: 1. For synonyms, the property is shown as "Public Synonym". 2. For system procedure, the flag should be True but it is displaying as False. 3. For both views and materialized views, the property is "System View". 4. For FTS templates, the property is showing as "System FTS Parser". Fixes #1257 --- .../schemas/fts_templates/static/js/fts_template.js | 2 +- .../servers/databases/schemas/functions/__init__.py | 5 +++++ .../servers/databases/schemas/synonyms/__init__.py | 7 +++++++ .../databases/schemas/synonyms/static/js/synonym.js | 6 ++---- .../templates/synonyms/sql/9.2_plus/properties.sql | 3 +-- .../templates/synonyms/sql/9.5_plus/properties.sql | 3 +-- .../synonyms/templates/synonyms/sql/default/properties.sql | 3 +-- .../servers/databases/schemas/views/static/js/mview.js | 2 +- 8 files changed, 19 insertions(+), 12 deletions(-) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/static/js/fts_template.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/static/js/fts_template.js index aa7080c0d..950643e3f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/static/js/fts_template.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/static/js/fts_template.js @@ -98,7 +98,7 @@ define('pgadmin.node.fts_template', [ control: 'node-list-by-id', cache_node: 'database', cache_level: 'database', },{ - id: 'is_sys_obj', label: gettext('System FTS parser?'), + id: 'is_sys_obj', label: gettext('System FTS template?'), cell:'boolean', type: 'switch', mode: ['properties'], },{ id: 'description', label: gettext('Comment'), cell: 'string', diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py index d343b394a..cc449b050 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py @@ -1365,6 +1365,11 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): if fnid <= self.manager.db_info[did]['datlastsysoid']: resp_data['sysfunc'] = True + # Set System Functions Status + resp_data['sysproc'] = False + if fnid <= self.manager.db_info[did]['datlastsysoid']: + resp_data['sysproc'] = True + # Get formatted Security Labels if 'seclabels' in resp_data: resp_data.update(parse_sec_labels_from_db(resp_data['seclabels'])) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py index 8c53c2b51..3ef935e13 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py @@ -208,6 +208,11 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare): ) ) + self.datlastsysoid = \ + self.manager.db_info[kwargs['did']]['datlastsysoid'] \ + if self.manager.db_info is not None and \ + kwargs['did'] in self.manager.db_info else 0 + # we will set template path for sql scripts self.template_path = 'synonyms/sql/#{0}#'.format( self.manager.version) @@ -420,6 +425,8 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare): gettext('The specified synonym could not be found.') ) + res['rows'][0]['is_sys_obj'] = ( + res['rows'][0]['oid'] <= self.datlastsysoid) return True, res['rows'][0] except Exception as e: return internal_server_error(errormsg=str(e)) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/static/js/synonym.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/static/js/synonym.js index 6cc4b06c3..1c3636220 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/static/js/synonym.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/static/js/synonym.js @@ -195,10 +195,8 @@ define('pgadmin.node.synonym', [ return false; }, },{ - id: 'is_public_synonym', label: gettext('Public synonym?'), - type: 'switch', mode: ['properties'], cell: 'switch', - options: { onText: gettext('Yes'), offText: gettext('No'), onColor: 'success', - offColor: 'ternary', size: 'mini'}, + id: 'is_sys_obj', label: gettext('System synonym?'), + cell:'boolean', type: 'switch', mode: ['properties'], }, ], validate: function() { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.2_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.2_plus/properties.sql index cb4c66c28..e9501a043 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.2_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.2_plus/properties.sql @@ -21,8 +21,7 @@ SELECT synname AS name, pg_get_userbyid(synowner) AS owner, AND nspname = synobjname AND nspobjecttype = 0), -- Default s = Synonym - 's') AS targettype, - CASE WHEN ns.nspname = 'public' THEN true ELSE false END AS is_public_synonym + 's') AS targettype FROM pg_synonym s JOIN pg_namespace ns ON s.synnamespace = ns.oid WHERE s.synnamespace={{scid}}::oid {% if syid %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.5_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.5_plus/properties.sql index 0b3b82d97..d78740e27 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.5_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.5_plus/properties.sql @@ -21,8 +21,7 @@ SELECT s.oid, synname AS name, pg_get_userbyid(synowner) AS owner, AND nspname = synobjname AND nspobjecttype = 0), -- Default s = Synonym - 's') AS targettype, - CASE WHEN ns.nspname = 'public' THEN true ELSE false END AS is_public_synonym + 's') AS targettype FROM pg_synonym s JOIN pg_namespace ns ON s.synnamespace = ns.oid WHERE s.synnamespace={{scid}}::oid {% if syid %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/properties.sql index eab57c8e3..ec7634a07 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/properties.sql @@ -9,8 +9,7 @@ SELECT synname AS name, pg_get_userbyid(synowner) AS owner, FROM pg_proc p, pg_namespace n WHERE p.pronamespace = n.oid AND n.nspname = synobjschema - AND p.proname = synobjname LIMIT 1), 's') AS targettype, -- Default s = Synonym - CASE WHEN ns.nspname = 'public' THEN true ELSE false END AS is_public_synonym + AND p.proname = synobjname LIMIT 1), 's') AS targettype -- Default s = Synonym FROM pg_synonym s JOIN pg_namespace ns ON s.synnamespace = ns.oid WHERE s.synnamespace={{scid}}::oid {% if syid %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/mview.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/mview.js index c5300a143..94c7cc431 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/mview.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/mview.js @@ -160,7 +160,7 @@ define('pgadmin.node.mview', [ node: 'schema', mode: ['create', 'edit'], cache_node: 'database', disabled: 'inSchema', select2: { allowClear: false }, },{ - id: 'system_view', label: gettext('System view?'), cell: 'string', + id: 'system_view', label: gettext('System materialized view?'), cell: 'string', type: 'switch', mode: ['properties'], }, pgBrowser.SecurityGroupSchema, { id: 'acl', label: gettext('Privileges'),