From f2f7812d539facfec7b95484c247392f21fefb24 Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Fri, 11 Apr 2025 20:50:10 +0200 Subject: [PATCH 01/10] resolve quick bug for results invalid type --- graphql_api/types/impacted_file/impacted_file.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphql_api/types/impacted_file/impacted_file.py b/graphql_api/types/impacted_file/impacted_file.py index 19441eb70c..b9fdbcb68f 100644 --- a/graphql_api/types/impacted_file/impacted_file.py +++ b/graphql_api/types/impacted_file/impacted_file.py @@ -91,7 +91,7 @@ def resolve_segments( else: return ProviderError() - segments = file_comparison.segments + segments = file_comparison.segments or [] if filters.get("has_unintended_changes") is True: # segments with no diff changes and at least 1 unintended change From 0df108708fcdd8e0155a86b2bde7c744ff816b43 Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Wed, 16 Apr 2025 12:50:58 +0200 Subject: [PATCH 02/10] trying to log more stuff to debug an error --- services/billing.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/services/billing.py b/services/billing.py index d945b2e85d..d64f0d5c54 100644 --- a/services/billing.py +++ b/services/billing.py @@ -726,25 +726,31 @@ def update_billing_address(self, owner: Owner, name, billing_address): return None try: - default_payment_method = stripe.Customer.retrieve( - owner.stripe_customer_id - ).invoice_settings.default_payment_method + log.info(f"Retrieving customer with ID {owner.stripe_customer_id}") + customer = stripe.Customer.retrieve(owner.stripe_customer_id) + log.info(f"Retrieved customer: {customer}") + default_payment_method = customer.invoice_settings.default_payment_method + log.info(f"Retrieved default payment method: {default_payment_method}") + log.info(f"Modifying payment method with billing details: name={name}, address={billing_address}") stripe.PaymentMethod.modify( default_payment_method, billing_details={"name": name, "address": billing_address}, ) + log.info(f"Modifying customer address: {billing_address}") stripe.Customer.modify(owner.stripe_customer_id, address=billing_address) log.info( f"Stripe successfully updated billing address for owner {owner.ownerid} by user #{self.requesting_user.ownerid}" ) - except Exception: + except Exception as e: log.error( "Unable to update billing address for customer", extra=dict( customer_id=owner.stripe_customer_id, subscription_id=owner.stripe_subscription_id, + error=str(e), + error_type=type(e).__name__, ), ) From 58129caf2577c83a9d55416b8ec038b25a211b59 Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Wed, 16 Apr 2025 12:56:16 +0200 Subject: [PATCH 03/10] lint --- services/billing.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/billing.py b/services/billing.py index d64f0d5c54..59cf33e4c6 100644 --- a/services/billing.py +++ b/services/billing.py @@ -732,7 +732,9 @@ def update_billing_address(self, owner: Owner, name, billing_address): default_payment_method = customer.invoice_settings.default_payment_method log.info(f"Retrieved default payment method: {default_payment_method}") - log.info(f"Modifying payment method with billing details: name={name}, address={billing_address}") + log.info( + f"Modifying payment method with billing details: name={name}, address={billing_address}" + ) stripe.PaymentMethod.modify( default_payment_method, billing_details={"name": name, "address": billing_address}, From 16501b2d7522e7ed700e6616ac9eb90d91f077f7 Mon Sep 17 00:00:00 2001 From: Rola Abuhasna Date: Wed, 16 Apr 2025 12:58:03 +0200 Subject: [PATCH 04/10] Update billing.py --- services/billing.py | 1 - 1 file changed, 1 deletion(-) diff --git a/services/billing.py b/services/billing.py index 59cf33e4c6..ec9617a318 100644 --- a/services/billing.py +++ b/services/billing.py @@ -726,7 +726,6 @@ def update_billing_address(self, owner: Owner, name, billing_address): return None try: - log.info(f"Retrieving customer with ID {owner.stripe_customer_id}") customer = stripe.Customer.retrieve(owner.stripe_customer_id) log.info(f"Retrieved customer: {customer}") default_payment_method = customer.invoice_settings.default_payment_method From 60e5f1a580048332b170d5e46377b7bca694a14d Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Wed, 16 Apr 2025 13:08:20 +0200 Subject: [PATCH 05/10] update code to better track if default method exists --- services/billing.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/services/billing.py b/services/billing.py index ec9617a318..35b5b16c8c 100644 --- a/services/billing.py +++ b/services/billing.py @@ -728,18 +728,30 @@ def update_billing_address(self, owner: Owner, name, billing_address): try: customer = stripe.Customer.retrieve(owner.stripe_customer_id) log.info(f"Retrieved customer: {customer}") + default_payment_method = customer.invoice_settings.default_payment_method log.info(f"Retrieved default payment method: {default_payment_method}") + + if default_payment_method is None: + log.warning( + f"Customer {owner.stripe_customer_id} has no default payment method, skipping payment method update" + ) + # Still update the customer address even if there's no payment method + stripe.Customer.modify(owner.stripe_customer_id, address=billing_address) + log.info( + f"Stripe successfully updated customer address for owner {owner.ownerid} by user #{self.requesting_user.ownerid}" + ) + return log.info( - f"Modifying payment method with billing details: name={name}, address={billing_address}" + f"Modifying payment method billing details for customer {owner.stripe_customer_id}" ) stripe.PaymentMethod.modify( default_payment_method, billing_details={"name": name, "address": billing_address}, ) - log.info(f"Modifying customer address: {billing_address}") + log.info(f"Modifying customer address for customer {owner.stripe_customer_id}") stripe.Customer.modify(owner.stripe_customer_id, address=billing_address) log.info( f"Stripe successfully updated billing address for owner {owner.ownerid} by user #{self.requesting_user.ownerid}" From 16fcc64513000a9873fddf7a112e5bd8bdee656c Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Wed, 16 Apr 2025 13:09:01 +0200 Subject: [PATCH 06/10] lint --- services/billing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/billing.py b/services/billing.py index 35b5b16c8c..5f2b8522f9 100644 --- a/services/billing.py +++ b/services/billing.py @@ -728,10 +728,10 @@ def update_billing_address(self, owner: Owner, name, billing_address): try: customer = stripe.Customer.retrieve(owner.stripe_customer_id) log.info(f"Retrieved customer: {customer}") - + default_payment_method = customer.invoice_settings.default_payment_method log.info(f"Retrieved default payment method: {default_payment_method}") - + if default_payment_method is None: log.warning( f"Customer {owner.stripe_customer_id} has no default payment method, skipping payment method update" From 4deacc7be274815d91c9f8d8a81ca76da27194e7 Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Wed, 16 Apr 2025 17:09:26 +0200 Subject: [PATCH 07/10] update with the right test --- services/tests/test_billing.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/tests/test_billing.py b/services/tests/test_billing.py index be880a0fba..ed98db2397 100644 --- a/services/tests/test_billing.py +++ b/services/tests/test_billing.py @@ -1868,6 +1868,8 @@ def test_update_billing_address_with_invalid_address(self, log_error_mock): extra={ "customer_id": "123", "subscription_id": "123", + "error": "Invalid API Key provided: default", + "error_type": "invalid_request_error", }, ) From da1bf84bbea0bd38e59bb7dd95fdc48f63f9b9aa Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Wed, 16 Apr 2025 17:10:19 +0200 Subject: [PATCH 08/10] lint --- services/billing.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/billing.py b/services/billing.py index 5f2b8522f9..890847e523 100644 --- a/services/billing.py +++ b/services/billing.py @@ -737,7 +737,9 @@ def update_billing_address(self, owner: Owner, name, billing_address): f"Customer {owner.stripe_customer_id} has no default payment method, skipping payment method update" ) # Still update the customer address even if there's no payment method - stripe.Customer.modify(owner.stripe_customer_id, address=billing_address) + stripe.Customer.modify( + owner.stripe_customer_id, address=billing_address + ) log.info( f"Stripe successfully updated customer address for owner {owner.ownerid} by user #{self.requesting_user.ownerid}" ) @@ -751,7 +753,9 @@ def update_billing_address(self, owner: Owner, name, billing_address): billing_details={"name": name, "address": billing_address}, ) - log.info(f"Modifying customer address for customer {owner.stripe_customer_id}") + log.info( + f"Modifying customer address for customer {owner.stripe_customer_id}" + ) stripe.Customer.modify(owner.stripe_customer_id, address=billing_address) log.info( f"Stripe successfully updated billing address for owner {owner.ownerid} by user #{self.requesting_user.ownerid}" From 363e9437f1d2a0bd8f85f85cbd252894189b5be9 Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Wed, 16 Apr 2025 17:14:27 +0200 Subject: [PATCH 09/10] add dynamic data to extra --- services/billing.py | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/services/billing.py b/services/billing.py index 890847e523..8966ed6bcb 100644 --- a/services/billing.py +++ b/services/billing.py @@ -727,26 +727,38 @@ def update_billing_address(self, owner: Owner, name, billing_address): try: customer = stripe.Customer.retrieve(owner.stripe_customer_id) - log.info(f"Retrieved customer: {customer}") + log.info("Retrieved customer", extra=dict(customer=customer)) default_payment_method = customer.invoice_settings.default_payment_method - log.info(f"Retrieved default payment method: {default_payment_method}") + log.info( + "Retrieved default payment method", + extra=dict(payment_method=default_payment_method), + ) if default_payment_method is None: log.warning( - f"Customer {owner.stripe_customer_id} has no default payment method, skipping payment method update" + "Customer has no default payment method, skipping payment method update", + extra=dict( + stripe_customer_id=owner.stripe_customer_id, + ownerid=owner.ownerid, + ), ) # Still update the customer address even if there's no payment method stripe.Customer.modify( owner.stripe_customer_id, address=billing_address ) log.info( - f"Stripe successfully updated customer address for owner {owner.ownerid} by user #{self.requesting_user.ownerid}" + "Stripe successfully updated customer address", + extra=dict( + ownerid=owner.ownerid, + requesting_user_id=self.requesting_user.ownerid, + ), ) return log.info( - f"Modifying payment method billing details for customer {owner.stripe_customer_id}" + "Modifying payment method billing details", + extra=dict(stripe_customer_id=owner.stripe_customer_id), ) stripe.PaymentMethod.modify( default_payment_method, @@ -754,11 +766,16 @@ def update_billing_address(self, owner: Owner, name, billing_address): ) log.info( - f"Modifying customer address for customer {owner.stripe_customer_id}" + "Modifying customer address", + extra=dict(stripe_customer_id=owner.stripe_customer_id), ) stripe.Customer.modify(owner.stripe_customer_id, address=billing_address) log.info( - f"Stripe successfully updated billing address for owner {owner.ownerid} by user #{self.requesting_user.ownerid}" + "Stripe successfully updated billing address", + extra=dict( + ownerid=owner.ownerid, + requesting_user_id=self.requesting_user.ownerid, + ), ) except Exception as e: log.error( From 76aa30c235da5e241c2bfae9db74ced8cf9ac452 Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Wed, 16 Apr 2025 17:30:41 +0200 Subject: [PATCH 10/10] update with the right test --- services/tests/test_billing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/tests/test_billing.py b/services/tests/test_billing.py index ed98db2397..f61eee33ef 100644 --- a/services/tests/test_billing.py +++ b/services/tests/test_billing.py @@ -1869,7 +1869,7 @@ def test_update_billing_address_with_invalid_address(self, log_error_mock): "customer_id": "123", "subscription_id": "123", "error": "Invalid API Key provided: default", - "error_type": "invalid_request_error", + "error_type": "AuthenticationError", }, )