fix(lint): auto-fix ruff violations and tune lint rules
- Auto-fixed 4,496 lint issues (import sorting, modern syntax, etc.) - Added ignore rules for patterns intentional in this codebase: E402 (late imports), E712 (SQLAlchemy filters), B904 (raise from), SIM108/SIM105/SIM117 (readability preferences) - Added per-file ignores for tests and scripts - Excluded broken scripts/rename_terminology.py (has curly quotes) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -10,7 +10,7 @@ Processes webhook events from Stripe:
|
||||
"""
|
||||
|
||||
import logging
|
||||
from datetime import datetime, timezone
|
||||
from datetime import UTC, datetime
|
||||
|
||||
import stripe
|
||||
from sqlalchemy.orm import Session
|
||||
@@ -19,10 +19,10 @@ from app.modules.billing.models import (
|
||||
AddOnProduct,
|
||||
BillingHistory,
|
||||
MerchantSubscription,
|
||||
StoreAddOn,
|
||||
StripeWebhookEvent,
|
||||
SubscriptionStatus,
|
||||
SubscriptionTier,
|
||||
StoreAddOn,
|
||||
)
|
||||
from app.modules.tenancy.models import Store, StorePlatform
|
||||
|
||||
@@ -68,7 +68,7 @@ class StripeWebhookHandler:
|
||||
if existing.status == "processed":
|
||||
logger.info(f"Skipping duplicate event {event_id}")
|
||||
return {"status": "skipped", "reason": "duplicate"}
|
||||
elif existing.status == "failed":
|
||||
if existing.status == "failed":
|
||||
logger.info(f"Retrying previously failed event {event_id}")
|
||||
else:
|
||||
# Record the event
|
||||
@@ -86,14 +86,14 @@ class StripeWebhookHandler:
|
||||
if not handler:
|
||||
logger.debug(f"No handler for event type {event_type}")
|
||||
existing.status = "processed"
|
||||
existing.processed_at = datetime.now(timezone.utc)
|
||||
existing.processed_at = datetime.now(UTC)
|
||||
db.commit()
|
||||
return {"status": "ignored", "reason": f"no handler for {event_type}"}
|
||||
|
||||
try:
|
||||
result = handler(db, event)
|
||||
existing.status = "processed"
|
||||
existing.processed_at = datetime.now(timezone.utc)
|
||||
existing.processed_at = datetime.now(UTC)
|
||||
db.commit()
|
||||
logger.info(f"Successfully processed event {event_id} ({event_type})")
|
||||
return {"status": "processed", "result": result}
|
||||
@@ -181,15 +181,15 @@ class StripeWebhookHandler:
|
||||
if session.subscription:
|
||||
stripe_sub = stripe.Subscription.retrieve(session.subscription)
|
||||
subscription.period_start = datetime.fromtimestamp(
|
||||
stripe_sub.current_period_start, tz=timezone.utc
|
||||
stripe_sub.current_period_start, tz=UTC
|
||||
)
|
||||
subscription.period_end = datetime.fromtimestamp(
|
||||
stripe_sub.current_period_end, tz=timezone.utc
|
||||
stripe_sub.current_period_end, tz=UTC
|
||||
)
|
||||
|
||||
if stripe_sub.trial_end:
|
||||
subscription.trial_ends_at = datetime.fromtimestamp(
|
||||
stripe_sub.trial_end, tz=timezone.utc
|
||||
stripe_sub.trial_end, tz=UTC
|
||||
)
|
||||
|
||||
logger.info(f"Subscription checkout completed for merchant {merchant_id}")
|
||||
@@ -264,10 +264,10 @@ class StripeWebhookHandler:
|
||||
try:
|
||||
stripe_sub = stripe.Subscription.retrieve(session.subscription)
|
||||
period_start = datetime.fromtimestamp(
|
||||
stripe_sub.current_period_start, tz=timezone.utc
|
||||
stripe_sub.current_period_start, tz=UTC
|
||||
)
|
||||
period_end = datetime.fromtimestamp(
|
||||
stripe_sub.current_period_end, tz=timezone.utc
|
||||
stripe_sub.current_period_end, tz=UTC
|
||||
)
|
||||
except Exception as e:
|
||||
logger.warning(f"Could not retrieve subscription period: {e}")
|
||||
@@ -320,10 +320,10 @@ class StripeWebhookHandler:
|
||||
subscription.stripe_subscription_id = stripe_sub.id
|
||||
subscription.status = self._map_stripe_status(stripe_sub.status)
|
||||
subscription.period_start = datetime.fromtimestamp(
|
||||
stripe_sub.current_period_start, tz=timezone.utc
|
||||
stripe_sub.current_period_start, tz=UTC
|
||||
)
|
||||
subscription.period_end = datetime.fromtimestamp(
|
||||
stripe_sub.current_period_end, tz=timezone.utc
|
||||
stripe_sub.current_period_end, tz=UTC
|
||||
)
|
||||
|
||||
logger.info(f"Subscription created for merchant {subscription.merchant_id}")
|
||||
@@ -348,15 +348,15 @@ class StripeWebhookHandler:
|
||||
# Update status and period
|
||||
subscription.status = self._map_stripe_status(stripe_sub.status)
|
||||
subscription.period_start = datetime.fromtimestamp(
|
||||
stripe_sub.current_period_start, tz=timezone.utc
|
||||
stripe_sub.current_period_start, tz=UTC
|
||||
)
|
||||
subscription.period_end = datetime.fromtimestamp(
|
||||
stripe_sub.current_period_end, tz=timezone.utc
|
||||
stripe_sub.current_period_end, tz=UTC
|
||||
)
|
||||
|
||||
# Handle cancellation
|
||||
if stripe_sub.cancel_at_period_end:
|
||||
subscription.cancelled_at = datetime.now(timezone.utc)
|
||||
subscription.cancelled_at = datetime.now(UTC)
|
||||
subscription.cancellation_reason = stripe_sub.metadata.get(
|
||||
"cancellation_reason", "user_request"
|
||||
)
|
||||
@@ -407,7 +407,7 @@ class StripeWebhookHandler:
|
||||
|
||||
# Cancel the subscription
|
||||
subscription.status = SubscriptionStatus.CANCELLED.value
|
||||
subscription.cancelled_at = datetime.now(timezone.utc)
|
||||
subscription.cancelled_at = datetime.now(UTC)
|
||||
|
||||
# Find all stores for this merchant, then cancel their add-ons
|
||||
store_ids = [
|
||||
@@ -429,7 +429,7 @@ class StripeWebhookHandler:
|
||||
addon_count = 0
|
||||
for addon in cancelled_addons:
|
||||
addon.status = "cancelled"
|
||||
addon.cancelled_at = datetime.now(timezone.utc)
|
||||
addon.cancelled_at = datetime.now(UTC)
|
||||
addon_count += 1
|
||||
|
||||
if addon_count > 0:
|
||||
@@ -463,7 +463,7 @@ class StripeWebhookHandler:
|
||||
stripe_invoice_id=invoice.id,
|
||||
stripe_payment_intent_id=invoice.payment_intent,
|
||||
invoice_number=invoice.number,
|
||||
invoice_date=datetime.fromtimestamp(invoice.created, tz=timezone.utc),
|
||||
invoice_date=datetime.fromtimestamp(invoice.created, tz=UTC),
|
||||
subtotal_cents=invoice.subtotal,
|
||||
tax_cents=invoice.tax or 0,
|
||||
total_cents=invoice.total,
|
||||
@@ -550,8 +550,8 @@ class StripeWebhookHandler:
|
||||
merchant_id=subscription.merchant_id,
|
||||
stripe_invoice_id=invoice.id,
|
||||
invoice_number=invoice.number,
|
||||
invoice_date=datetime.fromtimestamp(invoice.created, tz=timezone.utc),
|
||||
due_date=datetime.fromtimestamp(invoice.due_date, tz=timezone.utc)
|
||||
invoice_date=datetime.fromtimestamp(invoice.created, tz=UTC),
|
||||
due_date=datetime.fromtimestamp(invoice.due_date, tz=UTC)
|
||||
if invoice.due_date
|
||||
else None,
|
||||
subtotal_cents=invoice.subtotal,
|
||||
|
||||
Reference in New Issue
Block a user