From e697099893465031be7c5be149ea190ade3139c6 Mon Sep 17 00:00:00 2001 From: Emanuel Cino Date: Tue, 30 May 2023 15:31:30 +0200 Subject: [PATCH] [IMP] account_statement_import_online_wise: black, isort, prettier --- ...ne_bank_statement_provider_transferwise.py | 42 ++++++++++++++----- ...nk_statement_import_online_transferwise.py | 23 ++++++---- requirements.txt | 1 + ..._bank_statement_import_online_transferwise | 1 + .../setup.py | 6 +++ 5 files changed, 56 insertions(+), 17 deletions(-) create mode 120000 setup/account_bank_statement_import_online_transferwise/odoo/addons/account_bank_statement_import_online_transferwise create mode 100644 setup/account_bank_statement_import_online_transferwise/setup.py diff --git a/account_bank_statement_import_online_transferwise/models/online_bank_statement_provider_transferwise.py b/account_bank_statement_import_online_transferwise/models/online_bank_statement_provider_transferwise.py index f1260609..d9ecc15f 100644 --- a/account_bank_statement_import_online_transferwise/models/online_bank_statement_provider_transferwise.py +++ b/account_bank_statement_import_online_transferwise/models/online_bank_statement_provider_transferwise.py @@ -33,7 +33,10 @@ class OnlineBankStatementProviderTransferwise(models.Model): # NOTE: This is needed to workaround possible multiple 'origin' fields # present in the same view, resulting in wrong field view configuraion # if more than one is widget="dynamic_dropdown" - transferwise_profile = fields.Char(related="origin", readonly=False,) + transferwise_profile = fields.Char( + related="origin", + readonly=False, + ) @api.model def values_transferwise_profile(self): @@ -52,7 +55,10 @@ class OnlineBankStatementProviderTransferwise(models.Model): lambda entry: ( str(entry["id"]), "%s %s (personal)" - % (entry["details"]["firstName"], entry["details"]["lastName"],) + % ( + entry["details"]["firstName"], + entry["details"]["lastName"], + ) if entry["type"] == "personal" else entry["details"]["name"], ), @@ -70,7 +76,8 @@ class OnlineBankStatementProviderTransferwise(models.Model): self.ensure_one() if self.service != "transferwise": return super()._obtain_statement_data( - date_since, date_until, + date_since, + date_until, ) # pragma: no cover api_base = self.api_base or TRANSFERWISE_API_BASE @@ -78,7 +85,9 @@ class OnlineBankStatementProviderTransferwise(models.Model): private_key = self.certificate_private_key if private_key: private_key = serialization.load_pem_private_key( - private_key.encode(), password=None, backend=default_backend(), + private_key.encode(), + password=None, + backend=default_backend(), ) currency = (self.currency_id or self.company_id.currency_id).name @@ -187,7 +196,9 @@ class OnlineBankStatementProviderTransferwise(models.Model): fees_value = fees_value.copy_sign(amount_value) amount_value -= fees_value unique_import_id = "{}-{}-{}".format( - transaction_type, reference_number, int(date.timestamp()), + transaction_type, + reference_number, + int(date.timestamp()), ) line = { "name": payment_reference or description or "", @@ -275,11 +286,16 @@ class OnlineBankStatementProviderTransferwise(models.Model): raise UserError(_("Strong Customer Authentication is not configured")) one_time_token = e.headers["X-2FA-Approval"] signature = private_key.sign( - one_time_token.encode(), padding.PKCS1v15(), hashes.SHA256(), + one_time_token.encode(), + padding.PKCS1v15(), + hashes.SHA256(), ) with self._transferwise_urlopen( - url, api_key, one_time_token, b64encode(signature).decode(), + url, + api_key, + one_time_token, + b64encode(signature).decode(), ) as response: content = response.read().decode( response.headers.get_content_charset() or "utf-8" @@ -316,7 +332,8 @@ class OnlineBankStatementProviderTransferwise(models.Model): self.certificate_public_key = ( private_key.public_key() .public_bytes( - serialization.Encoding.PEM, serialization.PublicFormat.PKCS1, + serialization.Encoding.PEM, + serialization.PublicFormat.PKCS1, ) .decode() ) @@ -328,7 +345,9 @@ class OnlineBankStatementProviderTransferwise(models.Model): self.ensure_one() private_key = rsa.generate_private_key( - public_exponent=65537, key_size=2048, backend=default_backend(), + public_exponent=65537, + key_size=2048, + backend=default_backend(), ) self.certificate_private_key = private_key.private_bytes( serialization.Encoding.PEM, @@ -338,7 +357,10 @@ class OnlineBankStatementProviderTransferwise(models.Model): self.certificate_public_key = ( private_key.public_key() - .public_bytes(serialization.Encoding.PEM, serialization.PublicFormat.PKCS1,) + .public_bytes( + serialization.Encoding.PEM, + serialization.PublicFormat.PKCS1, + ) .decode() ) diff --git a/account_bank_statement_import_online_transferwise/tests/test_account_bank_statement_import_online_transferwise.py b/account_bank_statement_import_online_transferwise/tests/test_account_bank_statement_import_online_transferwise.py index e41296e9..e9efce69 100644 --- a/account_bank_statement_import_online_transferwise/tests/test_account_bank_statement_import_online_transferwise.py +++ b/account_bank_statement_import_online_transferwise/tests/test_account_bank_statement_import_online_transferwise.py @@ -60,7 +60,10 @@ class TestAccountBankAccountStatementImportOnlineTransferwise(common.Transaction self.transferwise_parse_transaction = lambda payload: ( Provider._transferwise_transaction_to_lines( Provider._transferwise_preparse_transaction( - json.loads(payload, parse_float=Decimal,) + json.loads( + payload, + parse_float=Decimal, + ) ) ) ) @@ -118,7 +121,8 @@ class TestAccountBankAccountStatementImportOnlineTransferwise(common.Transaction ) values_transferwise_profile = [] with mock.patch( - _provider_class + "._transferwise_retrieve", return_value=mocked_response, + _provider_class + "._transferwise_retrieve", + return_value=mocked_response, ): values_transferwise_profile = self.OnlineBankStatementProvider.with_context( {"api_base": "https://example.com", "api_key": "dummy"} @@ -186,10 +190,12 @@ class TestAccountBankAccountStatementImportOnlineTransferwise(common.Transaction return json.loads(payload, parse_float=Decimal) with mock.patch( - _provider_class + "._transferwise_retrieve", side_effect=mock_response, + _provider_class + "._transferwise_retrieve", + side_effect=mock_response, ): data = provider._obtain_statement_data( - self.now - relativedelta(hours=1), self.now, + self.now - relativedelta(hours=1), + self.now, ) self.assertEqual(len(data[0]), 0) @@ -213,10 +219,12 @@ class TestAccountBankAccountStatementImportOnlineTransferwise(common.Transaction provider.password = "API_KEY" with mock.patch( - _provider_class + "._transferwise_retrieve", return_value=[], + _provider_class + "._transferwise_retrieve", + return_value=[], ): data = provider._obtain_statement_data( - self.now - relativedelta(hours=1), self.now, + self.now - relativedelta(hours=1), + self.now, ) self.assertFalse(data) @@ -298,7 +306,8 @@ edF6byMgXSzgOWYuRPXwmHpBQV0GiexQUAxVyUzaVWfil69LaFfXaw== ], ): data = provider._obtain_statement_data( - self.now - relativedelta(hours=1), self.now, + self.now - relativedelta(hours=1), + self.now, ) self.assertEqual(len(data[0]), 0) diff --git a/requirements.txt b/requirements.txt index d3433a96..75851065 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ # generated from manifests external_dependencies chardet +cryptography ofxparse xlrd diff --git a/setup/account_bank_statement_import_online_transferwise/odoo/addons/account_bank_statement_import_online_transferwise b/setup/account_bank_statement_import_online_transferwise/odoo/addons/account_bank_statement_import_online_transferwise new file mode 120000 index 00000000..602b2166 --- /dev/null +++ b/setup/account_bank_statement_import_online_transferwise/odoo/addons/account_bank_statement_import_online_transferwise @@ -0,0 +1 @@ +../../../../account_bank_statement_import_online_transferwise \ No newline at end of file diff --git a/setup/account_bank_statement_import_online_transferwise/setup.py b/setup/account_bank_statement_import_online_transferwise/setup.py new file mode 100644 index 00000000..28c57bb6 --- /dev/null +++ b/setup/account_bank_statement_import_online_transferwise/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)