diff --git a/docs/en_US/release_notes_4_30.rst b/docs/en_US/release_notes_4_30.rst index c47a66864..117ddfc37 100644 --- a/docs/en_US/release_notes_4_30.rst +++ b/docs/en_US/release_notes_4_30.rst @@ -36,4 +36,5 @@ Bug fixes | `Issue #6084 `_ - Fixed TypeError exception in schema diff when selected any identical object. | `Issue #6096 `_ - Updated deployment documentation, refer correctly to uWSGI where Gunicorn had been referenced. | `Issue #6121 `_ - Fixed an issue where the database list in the new connection window is not visible. +| `Issue #6128 `_ - Fixed an issue where sequences are not created. | `Issue #6140 `_ - Ensure that verbose logs should be visible for Utility(Backup, Maintenance) jobs. diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py index 92bdd816e..b4f4ca450 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py @@ -216,6 +216,15 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] + return f(*args, **kwargs) return wrap diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/__init__.py index 4ec41bc1e..cc1660208 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/__init__.py @@ -201,10 +201,14 @@ class EventTriggerView(PGChildNodeView, SchemaDiffObjectCompare): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate']\ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] return f(*args, **kwargs) diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py index 698459ade..79859d565 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py @@ -143,10 +143,14 @@ class ExtensionView(PGChildNodeView, SchemaDiffObjectCompare): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] return f(*args, **kwargs) diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py index bf6f84770..c994b40ba 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py @@ -222,10 +222,14 @@ class ForeignDataWrapperView(PGChildNodeView, SchemaDiffObjectCompare): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] # Set the template path for the SQL scripts self.template_path = 'foreign_data_wrappers/sql/#{0}#'.format( diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py index 052f38bbb..0e95fa136 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py @@ -212,10 +212,14 @@ class ForeignServerView(PGChildNodeView, SchemaDiffObjectCompare): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] # Set the template path for the SQL scripts self.template_path = "foreign_servers/sql/#{0}#".format( diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/__init__.py index 485070c9d..676665c10 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/__init__.py @@ -229,10 +229,14 @@ class UserMappingView(PGChildNodeView, SchemaDiffObjectCompare): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] # Set the template path for the SQL scripts self.template_path = 'user_mappings/sql/#{0}#'.format( diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py index 60eab02a2..7b74535ac 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py @@ -234,10 +234,15 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare): 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 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] # Set the template path for the SQL scripts self.template_path = ( diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/__init__.py index fd6f2000b..5036a2ad0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/__init__.py @@ -145,11 +145,14 @@ def check_precondition(f): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info and \ - 'datistemplate' in self.manager.db_info[kwargs['did']] else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] # Set the template path for the SQL scripts if self.manager.server_type == 'gpdb': diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/__init__.py index 4c3019cb9..8376f4392 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/__init__.py @@ -151,10 +151,14 @@ class CatalogObjectView(PGChildNodeView): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] self.template_path = 'catalog_object/sql/{0}/#{1}#'.format( 'ppas' if self.manager.server_type == 'ppas' else 'pg', diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/__init__.py index 071b0330d..a2faa542c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/__init__.py @@ -178,10 +178,14 @@ class CatalogObjectColumnsView(PGChildNodeView): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] self.template_path = 'catalog_object_column/sql/#{0}#'.format( self.manager.version) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py index 18f567c1f..f101a1e3f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py @@ -198,10 +198,14 @@ class CollationView(PGChildNodeView, SchemaDiffObjectCompare): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] # Set the template path for the SQL scripts self.template_path = compile_template_path( diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py index 015568fb1..0832cc938 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py @@ -288,6 +288,15 @@ class DomainView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] + # we will set template path for sql scripts self.template_path = compile_template_path( 'domains/sql/', @@ -450,7 +459,8 @@ It may have been removed by another user or moved to another schema. # Set System Domain Status data['sysdomain'] = False - if doid <= self.manager.db_info[did]['datlastsysoid']: + if doid <= self.manager.db_info[did]['datlastsysoid'] or \ + self.datistemplate: data['sysdomain'] = True return True, data diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/__init__.py index 2b4702f62..d3b2ef3d7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/__init__.py @@ -265,10 +265,14 @@ class DomainConstraintView(PGChildNodeView): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] # Set the template path for the SQL scripts self.template_path = 'domain_constraints/sql/#{0}#'.format( diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py index 6df2e83d1..11d3a3db5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py @@ -344,10 +344,14 @@ class ForeignTableView(PGChildNodeView, DataTypeReader, if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] # Set template path for sql scripts depending # on the server version. diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py index 690d40cd7..8395bd0c6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py @@ -232,10 +232,14 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] # Set the template path for the SQL scripts self.template_path = 'fts_configurations/sql/#{0}#'.format( diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py index cbe587b6d..0059529ac 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py @@ -220,10 +220,15 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare): 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 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] # Set the template path for the SQL scripts self.template_path = 'fts_dictionaries/sql/#{0}#'.format( diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/__init__.py index cf129d755..5bef11af3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/__init__.py @@ -234,10 +234,15 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare): 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 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] # Set the template path for the SQL scripts self.template_path = 'fts_parsers/sql/#{0}#'.format( self.manager.version) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py index 904e5e226..7715cf1a7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py @@ -214,10 +214,15 @@ class FtsTemplateView(PGChildNodeView, SchemaDiffObjectCompare): 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 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] self.template_path = 'fts_templates/sql/#{0}#'.format( self.manager.version) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py index 328da8a66..4bc05b8fd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py @@ -142,10 +142,14 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare): 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 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] self.template_path = 'sequences/sql/#{0}#'.format( self.manager.version 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 670234efa..cdfaf6555 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 @@ -210,10 +210,14 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare): 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 - self.datistemplate = \ - self.manager.db_info[kwargs['did']]['datistemplate'] \ - if self.manager.db_info is not None and \ - kwargs['did'] in self.manager.db_info else False + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] # we will set template path for sql scripts self.template_path = 'synonyms/sql/#{0}#'.format( diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/__init__.py index 6961a018a..b190cfae3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/__init__.py @@ -273,6 +273,15 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare): ]['datlastsysoid'] if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] + self.table_template_path = compile_template_path( 'tables/sql', self.manager.server_type, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/__init__.py index dd6d9320a..2692bc026 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/__init__.py @@ -201,6 +201,15 @@ class CheckConstraintView(PGChildNodeView): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] + # Set the template path for the SQL scripts self.template_path = self.CHECK_CONSTRAINT_PATH.format( self.manager.version) @@ -440,7 +449,7 @@ class CheckConstraintView(PGChildNodeView): if cid: result = res[0] result['is_sys_obj'] = ( - result['oid'] <= self.datlastsysoid) + result['oid'] <= self.datlastsysoid or self.datistemplate) return ajax_response( response=result, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py index 54895ae65..23dedda8e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py @@ -227,6 +227,15 @@ class ExclusionConstraintView(PGChildNodeView): if self.manager.db_info is not None and \ kwargs['did'] in self.manager.db_info else 0 + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] + self.template_path = self.EXCLUSION_CONSTRAINT_PATH.format( self.manager.version) @@ -276,7 +285,7 @@ class ExclusionConstraintView(PGChildNodeView): if exid: result = res[0] result['is_sys_obj'] = ( - result['oid'] <= self.datlastsysoid) + result['oid'] <= self.datlastsysoid or self.datistemplate) return ajax_response( response=result, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/__init__.py index 373dca3cf..48a722f2f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/__init__.py @@ -233,6 +233,16 @@ class ForeignKeyConstraintView(PGChildNodeView): 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 + + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] + self.template_path = self.FOREIGN_KEY_PATH.format( self.manager.version) @@ -278,7 +288,7 @@ class ForeignKeyConstraintView(PGChildNodeView): if fkid: result = res[0] result['is_sys_obj'] = ( - result['oid'] <= self.datlastsysoid) + result['oid'] <= self.datlastsysoid or self.datistemplate) return ajax_response( response=result, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py index 065303161..0eb50597e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py @@ -246,6 +246,16 @@ class IndexConstraintView(PGChildNodeView): 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 + + self.datistemplate = False + if ( + self.manager.db_info is not None and + kwargs['did'] in self.manager.db_info and + 'datistemplate' in self.manager.db_info[kwargs['did']] + ): + self.datistemplate = self.manager.db_info[ + kwargs['did']]['datistemplate'] + self.template_path = self.INDEX_CONSTRAINT_PATH.format( self.manager.version) @@ -294,7 +304,7 @@ class IndexConstraintView(PGChildNodeView): if cid: result = res[0] result['is_sys_obj'] = ( - result['oid'] <= self.datlastsysoid) + result['oid'] <= self.datlastsysoid or self.datistemplate) return ajax_response( response=result, diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py b/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py index 1bbbf2f6f..243905bfd 100644 --- a/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py @@ -223,6 +223,15 @@ class ResourceGroupView(NodeView): if self.manager.db_info is not None and \ self.manager.did in self.manager.db_info else 0 + self.datistemplate = False + if ( + self.manager.db_info is not None and + self.manager.did in self.manager.db_info and + 'datistemplate' in self.manager.db_info[self.manager.did] + ): + self.datistemplate = self.manager.db_info[ + self.manager.did]['datistemplate'] + if not self.conn.connected(): return precondition_required( gettext( @@ -340,7 +349,7 @@ class ResourceGroupView(NodeView): return gone(gettext("""Could not find the resource group.""")) res['rows'][0]['is_sys_obj'] = ( - res['rows'][0]['oid'] <= self.datlastsysoid) + res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate) return ajax_response( response=res['rows'][0], diff --git a/web/pgadmin/browser/server_groups/servers/roles/__init__.py b/web/pgadmin/browser/server_groups/servers/roles/__init__.py index d81dd82c2..3fbdd8d48 100644 --- a/web/pgadmin/browser/server_groups/servers/roles/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/roles/__init__.py @@ -578,6 +578,14 @@ rolmembership:{ self.manager.db_info[self.manager.did]['datlastsysoid'] \ if self.manager.db_info is not None and \ self.manager.did in self.manager.db_info else 0 + self.datistemplate = False + if ( + self.manager.db_info is not None and + self.manager.did in self.manager.db_info and + 'datistemplate' in self.manager.db_info[self.manager.did] + ): + self.datistemplate = self.manager.db_info[ + self.manager.did]['datistemplate'] self.sql_path = 'roles/sql/#{0}#'.format(self.manager.version) @@ -727,7 +735,7 @@ rolmembership:{ return gone(self.not_found_error_msg()) res['rows'][0]['is_sys_obj'] = ( - res['rows'][0]['oid'] <= self.datlastsysoid) + res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate) return ajax_response( response=res['rows'][0], diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/__init__.py b/web/pgadmin/browser/server_groups/servers/tablespaces/__init__.py index 4fc09a0f2..56648dadb 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/__init__.py @@ -111,6 +111,14 @@ class TablespaceView(PGChildNodeView): self.manager.db_info[self.manager.did]['datlastsysoid'] \ if self.manager.db_info is not None and \ self.manager.did in self.manager.db_info else 0 + self.datistemplate = False + if ( + self.manager.db_info is not None and + self.manager.did in self.manager.db_info and + 'datistemplate' in self.manager.db_info[self.manager.did] + ): + self.datistemplate = self.manager.db_info[ + self.manager.did]['datistemplate'] # If DB not connected then return error to browser if not self.conn.connected(): @@ -268,7 +276,7 @@ class TablespaceView(PGChildNodeView): # Making copy of output for future use copy_data = dict(res['rows'][0]) copy_data['is_sys_obj'] = ( - copy_data['oid'] <= self.datlastsysoid) + copy_data['oid'] <= self.datlastsysoid or self.datistemplate) copy_data = self._formatter(copy_data, tsid) return ajax_response( diff --git a/web/pgadmin/utils/driver/psycopg2/server_manager.py b/web/pgadmin/utils/driver/psycopg2/server_manager.py index 008047e43..7ca3acb62 100644 --- a/web/pgadmin/utils/driver/psycopg2/server_manager.py +++ b/web/pgadmin/utils/driver/psycopg2/server_manager.py @@ -207,7 +207,8 @@ class ServerManager(object): SELECT db.oid as did, db.datname, db.datallowconn, pg_encoding_to_char(db.encoding) AS serverencoding, - has_database_privilege(db.oid, 'CREATE') as cancreate, datlastsysoid + has_database_privilege(db.oid, 'CREATE') as cancreate, datlastsysoid, + datistemplate FROM pg_database db WHERE db.oid = {0}""".format(did))