Hi, PFA patches, 1) To fix the validation issue while creating new sequence RM#3014
2) Fix PEP-8 issues in sequence module pycodestyle --config=.pycodestyle ./pgadmin/browser/server_groups/servers/databases/schemas/sequences/ 3) To fix the regression test for Tablespace when running with Python3.x RM#3138 -- Regards, Murtuza Zabuawala EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/sql/default/create.sql index 0444a0d..e58507a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/sql/default/create.sql @@ -1,18 +1,16 @@ -{% if data %} -CREATE SEQUENCE {{ conn|qtIdent(data.schema) }}.{{ conn|qtIdent(data.name) }} -{% if data.cycled and data.cycled == True %} - CYCLE -{% endif %} -{% if data.increment is defined %} - INCREMENT {{data.increment}} -{% endif %}{% if data.start is defined %} - START {{data.start}} -{% elif data.current_value is defined %} - START {{data.current_value}} -{% endif %}{% if data.minimum is defined %} - MINVALUE {{data.minimum}} -{% endif %}{% if data.maximum is defined %} - MAXVALUE {{data.maximum}} -{% endif %}{% if data.cache is defined %} +CREATE SEQUENCE {{ conn|qtIdent(data.schema, data.name) }}{% if data.increment is defined and data.cycled %} + + CYCLE{% endif %}{% if data.increment is defined and data.increment is number %} + + INCREMENT {{data.increment}}{% endif %}{% if data.start is defined and data.start is number %} + + START {{data.start}}{% elif data.current_value is defined and data.current_value is number %} + + START {{data.current_value}}{% endif %}{% if data.minimum is defined and data.minimum is number %} + + MINVALUE {{data.minimum}}{% endif %}{% if data.maximum is defined and data.maximum is number %} + + MAXVALUE {{data.maximum}}{% endif %}{% if data.cache is defined and data.cache is number %} + CACHE {{data.cache}}{% endif %}; -{% endif %} +
diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_backend_supported.py b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_backend_supported.py index 3aa43e2..9530f8f 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_backend_supported.py +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_backend_supported.py @@ -6,8 +6,12 @@ # This software is released under the PostgreSQL Licence # ########################################################################## +import sys -from mock import MagicMock +if sys.version_info < (3, 3): + from mock import MagicMock +else: + from unittest.mock import MagicMock from pgadmin.browser.server_groups.servers.tablespaces import TablespaceModule from pgadmin.utils.route import BaseTestGenerator @@ -43,4 +47,6 @@ class BackendSupportedTestCase(BaseTestGenerator): manager = MagicMock() manager.sversion = self.manager['sversion'] manager.server_type = self.manager['server_type'] - self.assertEquals(self.expected_result, module.BackendSupported(manager)) + self.assertEquals( + self.expected_result, module.BackendSupported(manager) + )
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 25722d6..f49c2d7 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 @@ -11,7 +11,6 @@ import simplejson as json from functools import wraps - import pgadmin.browser.server_groups.servers.databases as database from flask import render_template, make_response, request, jsonify from flask_babel import gettext as _ @@ -151,7 +150,9 @@ class SequenceView(PGChildNodeView): else: self.conn = self.manager.connection() - self.template_path = 'sequence/sql/#{0}#'.format(self.manager.version) + self.template_path = 'sequence/sql/#{0}#'.format( + self.manager.version + ) self.acl = ['r', 'w', 'U'] self.qtIdent = driver.qtIdent @@ -162,7 +163,8 @@ class SequenceView(PGChildNodeView): @check_precondition(action='list') def list(self, gid, sid, did, scid): """ - This function is used to list all the sequence nodes within the collection. + This function is used to list all the sequence nodes within the + collection. Args: gid: Server Group ID @@ -173,7 +175,10 @@ class SequenceView(PGChildNodeView): Returns: """ - SQL = render_template("/".join([self.template_path, 'properties.sql']), scid=scid) + SQL = render_template( + "/".join([self.template_path, 'properties.sql']), + scid=scid + ) status, res = self.conn.execute_dict(SQL) if not status: @@ -186,8 +191,8 @@ class SequenceView(PGChildNodeView): @check_precondition(action='nodes') def nodes(self, gid, sid, did, scid, seid=None): """ - This function is used to create all the child nodes within the collection. - Here it will create all the sequence nodes. + This function is used to create all the child nodes within the + collection, Here it will create all the sequence nodes. Args: gid: Server Group ID @@ -210,9 +215,7 @@ class SequenceView(PGChildNodeView): if seid is not None: if len(rset['rows']) == 0: - return gone( - errormsg=_("Could not find the sequence.") - ) + return gone(errormsg=_("Could not find the sequence.")) row = rset['rows'][0] return make_json_response( data=self.blueprint.generate_browser_node( @@ -253,7 +256,10 @@ class SequenceView(PGChildNodeView): Returns: """ - SQL = render_template("/".join([self.template_path, 'properties.sql']), scid=scid, seid=seid) + SQL = render_template( + "/".join([self.template_path, 'properties.sql']), + scid=scid, seid=seid + ) status, res = self.conn.execute_dict(SQL) if not status: @@ -263,7 +269,10 @@ class SequenceView(PGChildNodeView): return gone(_("Could not find the sequence in the database.")) for row in res['rows']: - SQL = render_template("/".join([self.template_path, 'get_def.sql']), data=row) + SQL = render_template( + "/".join([self.template_path, 'get_def.sql']), + data=row + ) status, rset1 = self.conn.execute_dict(SQL) if not status: return internal_server_error(errormsg=rset1) @@ -287,7 +296,10 @@ class SequenceView(PGChildNodeView): }) row['securities'] = sec_lbls - SQL = render_template("/".join([self.template_path, 'acl.sql']), scid=scid, seid=seid) + SQL = render_template( + "/".join([self.template_path, 'acl.sql']), + scid=scid, seid=seid + ) status, dataclres = self.conn.execute_dict(SQL) if not status: return internal_server_error(errormsg=res) @@ -349,8 +361,12 @@ class SequenceView(PGChildNodeView): if 'relacl' in data: data['relacl'] = parse_priv_to_db(data['relacl'], 'DATABASE') - # The SQL below will execute rest DMLs because we cannot execute CREATE with any other - SQL = render_template("/".join([self.template_path, 'grant.sql']), data=data, conn=self.conn) + # The SQL below will execute rest DMLs because we cannot execute + # CREATE with any other + SQL = render_template( + "/".join([self.template_path, 'grant.sql']), + data=data, conn=self.conn + ) SQL = SQL.strip('\n').strip(' ') if SQL and SQL != "": status, msg = self.conn.execute_scalar(SQL) @@ -365,11 +381,11 @@ class SequenceView(PGChildNodeView): ) SQL = SQL.strip('\n').strip(' ') - status, rset= self.conn.execute_2darray(SQL) + status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=rset) - row=rset['rows'][0] + row = rset['rows'][0] return jsonify( node=self.blueprint.generate_browser_node( row['oid'], @@ -402,7 +418,10 @@ class SequenceView(PGChildNodeView): cascade = False try: - SQL = render_template("/".join([self.template_path, 'properties.sql']), scid=scid, seid=seid) + SQL = render_template( + "/".join([self.template_path, 'properties.sql']), + scid=scid, seid=seid + ) status, res = self.conn.execute_dict(SQL) if not status: return internal_server_error(errormsg=res) @@ -418,7 +437,10 @@ class SequenceView(PGChildNodeView): ) ) - SQL = render_template("/".join([self.template_path, 'delete.sql']), data=res['rows'][0], cascade=cascade) + SQL = render_template( + "/".join([self.template_path, 'delete.sql']), + data=res['rows'][0], cascade=cascade + ) status, res = self.conn.execute_scalar(SQL) if not status: return internal_server_error(errormsg=res) @@ -551,7 +573,10 @@ class SequenceView(PGChildNodeView): ] if seid is not None: - SQL = render_template("/".join([self.template_path, 'properties.sql']), scid=scid, seid=seid) + SQL = render_template( + "/".join([self.template_path, 'properties.sql']), + scid=scid, seid=seid + ) status, res = self.conn.execute_dict(SQL) if not status: return internal_server_error(errormsg=res) @@ -566,27 +591,41 @@ class SequenceView(PGChildNodeView): for key in ['relacl']: if key in data and data[key] is not None: if 'added' in data[key]: - data[key]['added'] = parse_priv_to_db(data[key]['added'], self.acl) + data[key]['added'] = parse_priv_to_db( + data[key]['added'], self.acl + ) if 'changed' in data[key]: - data[key]['changed'] = parse_priv_to_db(data[key]['changed'], self.acl) + data[key]['changed'] = parse_priv_to_db( + data[key]['changed'], self.acl + ) if 'deleted' in data[key]: - data[key]['deleted'] = parse_priv_to_db(data[key]['deleted'], self.acl) + data[key]['deleted'] = parse_priv_to_db( + data[key]['deleted'], self.acl + ) # If name is not present with in update data then copy it # from old data for arg in required_args: if arg not in data: data[arg] = old_data[arg] - SQL = render_template("/".join([self.template_path, 'update.sql']), - data=data, o_data=old_data, conn=self.conn) + SQL = render_template( + "/".join([self.template_path, 'update.sql']), + data=data, o_data=old_data, conn=self.conn + ) return SQL, data['name'] if 'name' in data else old_data['name'] else: # To format privileges coming from client if 'relacl' in data: data['relacl'] = parse_priv_to_db(data['relacl'], self.acl) - SQL = render_template("/".join([self.template_path, 'create.sql']), data=data, conn=self.conn) - SQL += render_template("/".join([self.template_path, 'grant.sql']), data=data, conn=self.conn) + SQL = render_template( + "/".join([self.template_path, 'create.sql']), + data=data, conn=self.conn + ) + SQL += render_template( + "/".join([self.template_path, 'grant.sql']), + data=data, conn=self.conn + ) return SQL, data['name'] @check_precondition(action="sql") @@ -602,7 +641,10 @@ class SequenceView(PGChildNodeView): seid: Sequence ID """ - SQL = render_template("/".join([self.template_path, 'properties.sql']), scid=scid, seid=seid) + SQL = render_template( + "/".join([self.template_path, 'properties.sql']), + scid=scid, seid=seid + ) status, res = self.conn.execute_dict(SQL) if not status: return internal_server_error(errormsg=res) @@ -610,7 +652,10 @@ class SequenceView(PGChildNodeView): return gone(_("Could not find the sequence in the database.")) for row in res['rows']: - SQL = render_template("/".join([self.template_path, 'get_def.sql']), data=row) + SQL = render_template( + "/".join([self.template_path, 'get_def.sql']), + data=row + ) status, rset1 = self.conn.execute_dict(SQL) if not status: return internal_server_error(errormsg=rset1) @@ -767,7 +812,9 @@ class SequenceView(PGChildNodeView): # Get schema name status, schema_name = self.conn.execute_scalar( render_template( - 'schema/pg/#{0}#/sql/get_name.sql'.format(self.manager.version), + 'schema/pg/#{0}#/sql/get_name.sql'.format( + self.manager.version + ), scid=scid ) ) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/__init__.py index 610bfb9..6ab8c7e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/__init__.py @@ -11,6 +11,5 @@ from pgadmin.utils.route import BaseTestGenerator class SequenceTestGenerator(BaseTestGenerator): - - def runTest(self): - return [] + def runTest(self): + return []