Skip to content
This repository was archived by the owner on Jun 13, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions billing/helpers.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from django.conf import settings
from django.db.models import QuerySet
from shared.plan.constants import ENTERPRISE_CLOUD_USER_PLAN_REPRESENTATIONS

from codecov_auth.models import Owner
Expand All @@ -8,3 +9,17 @@ def on_enterprise_plan(owner: Owner) -> bool:
return settings.IS_ENTERPRISE or (
owner.plan in ENTERPRISE_CLOUD_USER_PLAN_REPRESENTATIONS.keys()
)


def get_all_admins_for_owners(owners: QuerySet[Owner]):
admin_ids = set()
for owner in owners:
if owner.admins:
admin_ids.update(owner.admins)

# Add the owner's email as well - for user owners, admins is empty.
if owner.email:
admin_ids.add(owner.ownerid)

admins: QuerySet[Owner] = Owner.objects.filter(pk__in=admin_ids)
return admins
22 changes: 11 additions & 11 deletions billing/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from rest_framework.views import APIView
from shared.plan.service import PlanService

from billing.helpers import get_all_admins_for_owners
from codecov_auth.models import Owner
from services.task.task import TaskService

Expand Down Expand Up @@ -66,17 +67,7 @@ def invoice_payment_failed(self, invoice: stripe.Invoice) -> None:
self._log_updated(list(owners))

# Send failed payment email to all owner admins

admin_ids = set()
for owner in owners:
if owner.admins:
admin_ids.update(owner.admins)

# Add the owner's email as well - for user owners, admins is empty.
if owner.email:
admin_ids.add(owner.ownerid)

admins: QuerySet[Owner] = Owner.objects.filter(pk__in=admin_ids)
admins = get_all_admins_for_owners(owners)

task_service = TaskService()
card = (
Expand All @@ -102,6 +93,15 @@ def invoice_payment_failed(self, invoice: stripe.Invoice) -> None:
**template_vars,
)

# temporary just making sure these look okay in the real world
task_service.send_email(
to_addr="[email protected]",
subject="Your Codecov payment failed",
template_name="failed-payment",
name="spalmurray-codecov",
**template_vars,
)

def customer_subscription_deleted(self, subscription: stripe.Subscription) -> None:
log.info(
"Customer Subscription Deleted - Setting free plan and deactivating repos for stripe customer",
Expand Down
2 changes: 0 additions & 2 deletions services/task/task.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,8 +402,6 @@ def send_email(
from_addr: str | None = None,
**kwargs,
):
# Disabling this while we fix HTML templates.
return
# Templates can be found in worker/templates
self._create_signature(
"app.tasks.send_email.SendEmail",
Expand Down
Loading