Skip to content

Commit 06167fb

Browse files
authored
ref: Remove PlanData references for Plan model properties (#1150)
1 parent eaf517c commit 06167fb

File tree

16 files changed

+96
-96
lines changed

16 files changed

+96
-96
lines changed

api/internal/owner/serializers.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ def validate_value(self, value: str) -> str:
131131

132132
plan_service = PlanService(current_org=current_org)
133133
plan_values = [
134-
plan["value"] for plan in plan_service.available_plans(current_owner)
134+
plan.name for plan in plan_service.available_plans(current_owner)
135135
]
136136
if value not in plan_values:
137137
raise serializers.ValidationError(

api/internal/tests/views/test_user_viewset.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
PullFactory,
1111
RepositoryFactory,
1212
)
13-
from shared.plan.constants import PlanName, TierName
13+
from shared.plan.constants import DEFAULT_FREE_PLAN, TierName
1414

1515
from core.models import Pull
1616
from utils.test_utils import APIClient
@@ -20,7 +20,7 @@ class UserViewSetTests(APITestCase):
2020
def setUp(self):
2121
non_org_active_user = OwnerFactory()
2222
tier = TierFactory(tier_name=TierName.BASIC.value)
23-
plan = PlanFactory(name=PlanName.BASIC_PLAN_NAME.value, tier=tier)
23+
plan = PlanFactory(name=DEFAULT_FREE_PLAN, tier=tier)
2424
self.current_owner = OwnerFactory(
2525
plan=plan.name,
2626
plan_user_count=5,

billing/tests/test_views.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -871,7 +871,7 @@ def test_customer_subscription_updated_does_not_change_subscription_if_not_paid_
871871
has_unverified_initial_payment_method_mock,
872872
):
873873
has_unverified_initial_payment_method_mock.return_value = False
874-
self.owner.plan = PlanName.BASIC_PLAN_NAME.value
874+
self.owner.plan = DEFAULT_FREE_PLAN
875875
self.owner.plan_user_count = 0
876876
self.owner.plan_auto_activate = False
877877
self.owner.save()
@@ -895,7 +895,7 @@ def test_customer_subscription_updated_does_not_change_subscription_if_not_paid_
895895
)
896896

897897
self.owner.refresh_from_db()
898-
assert self.owner.plan == PlanName.BASIC_PLAN_NAME.value
898+
assert self.owner.plan == DEFAULT_FREE_PLAN
899899
assert self.owner.plan_user_count == 0
900900
assert self.owner.plan_auto_activate == False
901901
pm_mock.assert_called_once_with(

codecov_auth/tests/unit/services/test_org_level_token_service.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
PlanFactory,
1111
TierFactory,
1212
)
13-
from shared.plan.constants import PlanName, TierName
13+
from shared.plan.constants import DEFAULT_FREE_PLAN, PlanName, TierName
1414

1515
from codecov_auth.models import OrganizationLevelToken
1616
from codecov_auth.services.org_level_token_service import OrgLevelTokenService
@@ -47,7 +47,7 @@ def setUp(self):
4747
self.basic_tier = TierFactory(tier_name=TierName.BASIC.value)
4848
self.basic_plan = PlanFactory(
4949
tier=self.basic_tier,
50-
name=PlanName.BASIC_PLAN_NAME.value,
50+
name=DEFAULT_FREE_PLAN,
5151
)
5252
self.owner = OwnerFactory(plan=self.enterprise_plan.name)
5353

graphql_api/tests/test_coverage_analytics.py

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
RepositoryFactory,
1111
)
1212

13+
from billing.helpers import mock_all_plans_and_tiers
1314
from core.models import Commit, Repository
1415
from graphql_api.tests.helper import GraphQLTestHelper
1516
from graphql_api.types.coverage_analytics.coverage_analytics import (
@@ -248,6 +249,7 @@ def test_coverage_analytics_resolves_to_error(self) -> None:
248249
def test_coverage_analytics_with_interval(self):
249250
"""Test with interval argument to fetch coverage data in a specific time range"""
250251

252+
mock_all_plans_and_tiers()
251253
# Create data to populate the timeseries graph
252254
repo = self.create_repository("test-repo")
253255
one_day_ago = timezone.make_aware(datetime.datetime(2022, 1, 1, 0, 0))

graphql_api/tests/test_owner.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1198,7 +1198,7 @@ def test_fetch_owner_with_no_service(self):
11981198
current_org = OwnerFactory(
11991199
username="random-plan-user",
12001200
service="github",
1201-
plan=PlanName.BASIC_PLAN_NAME.value,
1201+
plan=DEFAULT_FREE_PLAN,
12021202
)
12031203

12041204
query = """{

graphql_api/types/owner/owner.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from ariadne import ObjectType
99
from django.conf import settings
1010
from graphql import GraphQLResolveInfo
11-
from shared.plan.constants import DEFAULT_FREE_PLAN, PlanData, convert_to_DTO
11+
from shared.plan.constants import DEFAULT_FREE_PLAN
1212
from shared.plan.service import PlanService
1313

1414
import services.activation as activation
@@ -111,16 +111,16 @@ def resolve_plan(owner: Owner, info: GraphQLResolveInfo) -> PlanService:
111111
@owner_bindable.field("pretrialPlan")
112112
@require_part_of_org
113113
@sync_to_async
114-
def resolve_plan_representation(owner: Owner, info: GraphQLResolveInfo) -> PlanData:
114+
def resolve_plan_representation(owner: Owner, info: GraphQLResolveInfo) -> Plan:
115115
info.context["plan_service"] = PlanService(current_org=owner)
116116
free_plan = Plan.objects.select_related("tier").get(name=DEFAULT_FREE_PLAN)
117-
return convert_to_DTO(free_plan)
117+
return free_plan
118118

119119

120120
@owner_bindable.field("availablePlans")
121121
@require_part_of_org
122122
@sync_to_async
123-
def resolve_available_plans(owner: Owner, info: GraphQLResolveInfo) -> List[PlanData]:
123+
def resolve_available_plans(owner: Owner, info: GraphQLResolveInfo) -> List[Plan]:
124124
plan_service = PlanService(current_org=owner)
125125
info.context["plan_service"] = plan_service
126126
owner = info.context["request"].current_owner
@@ -130,7 +130,7 @@ def resolve_available_plans(owner: Owner, info: GraphQLResolveInfo) -> List[Plan
130130
@owner_bindable.field("hasPrivateRepos")
131131
@sync_to_async
132132
@require_part_of_org
133-
def resolve_has_private_repos(owner: Owner, info: GraphQLResolveInfo) -> List[PlanData]:
133+
def resolve_has_private_repos(owner: Owner, info: GraphQLResolveInfo) -> bool:
134134
return owner.has_private_repos
135135

136136

Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
from typing import List, Optional
22

33
from ariadne import ObjectType
4-
from shared.plan.constants import PlanData
54
from shared.plan.service import PlanService
65

76
from codecov.db import sync_to_async
7+
from codecov_auth.models import Plan
88
from graphql_api.helpers.ariadne import ariadne_load_local_graphql
99

1010
plan_representation = ariadne_load_local_graphql(
@@ -14,70 +14,70 @@
1414

1515

1616
@plan_representation_bindable.field("marketingName")
17-
def resolve_marketing_name(plan_data: PlanData, info) -> str:
18-
return plan_data["marketing_name"]
17+
def resolve_marketing_name(plan_data: Plan, info) -> str:
18+
return plan_data.marketing_name
1919

2020

2121
@plan_representation_bindable.field("value")
22-
def resolve_plan_value(plan_data: PlanData, info) -> str:
23-
return plan_data["value"]
22+
def resolve_plan_value(plan_data: Plan, info) -> str:
23+
return plan_data.name
2424

2525

2626
@plan_representation_bindable.field("billingRate")
27-
def resolve_billing_rate(plan_data: PlanData, info) -> Optional[str]:
28-
return plan_data["billing_rate"]
27+
def resolve_billing_rate(plan_data: Plan, info) -> Optional[str]:
28+
return plan_data.billing_rate
2929

3030

3131
@plan_representation_bindable.field("baseUnitPrice")
32-
def resolve_base_unit_price(plan_data: PlanData, info) -> int:
33-
return plan_data["base_unit_price"]
32+
def resolve_base_unit_price(plan_data: Plan, info) -> int:
33+
return plan_data.base_unit_price
3434

3535

3636
@plan_representation_bindable.field("benefits")
3737
@sync_to_async
38-
def resolve_benefits(plan_data: PlanData, info) -> List[str]:
38+
def resolve_benefits(plan_data: Plan, info) -> List[str]:
3939
plan_service: PlanService = info.context["plan_service"]
4040
if plan_service.is_org_trialing:
4141
benefits_with_pretrial_users = [
4242
benefit.replace(
4343
"Up to 1 user", f"Up to {plan_service.pretrial_users_count} users"
4444
)
45-
for benefit in plan_data["benefits"]
45+
for benefit in plan_data.benefits
4646
]
4747
return benefits_with_pretrial_users
48-
return plan_data["benefits"]
48+
return plan_data.benefits
4949

5050

5151
@plan_representation_bindable.field("monthlyUploadLimit")
52-
def resolve_monthly_uploads_limit(plan_data: PlanData, info) -> Optional[int]:
53-
return plan_data["monthly_uploads_limit"]
52+
def resolve_monthly_uploads_limit(plan_data: Plan, info) -> Optional[int]:
53+
return plan_data.monthly_uploads_limit
5454

5555

5656
@plan_representation_bindable.field("isEnterprisePlan")
57-
def resolve_is_enterprise(plan_data: PlanData, info) -> bool:
58-
return plan_data["is_enterprise_plan"]
57+
def resolve_is_enterprise(plan_data: Plan, info) -> bool:
58+
return plan_data.is_enterprise_plan
5959

6060

6161
@plan_representation_bindable.field("isFreePlan")
62-
def resolve_is_free(plan_data: PlanData, info) -> bool:
63-
return plan_data["is_free_plan"]
62+
def resolve_is_free(plan_data: Plan, info) -> bool:
63+
return plan_data.is_free_plan
6464

6565

6666
@plan_representation_bindable.field("isProPlan")
67-
def resolve_is_pro(plan_data: PlanData, info) -> bool:
68-
return plan_data["is_pro_plan"]
67+
def resolve_is_pro(plan_data: Plan, info) -> bool:
68+
return plan_data.is_pro_plan
6969

7070

7171
@plan_representation_bindable.field("isTeamPlan")
72-
def resolve_is_team(plan_data: PlanData, info) -> bool:
73-
return plan_data["is_team_plan"]
72+
def resolve_is_team(plan_data: Plan, info) -> bool:
73+
return plan_data.is_team_plan
7474

7575

7676
@plan_representation_bindable.field("isSentryPlan")
77-
def resolve_is_sentry(plan_data: PlanData, info) -> bool:
78-
return plan_data["is_sentry_plan"]
77+
def resolve_is_sentry(plan_data: Plan, info) -> bool:
78+
return plan_data.is_sentry_plan
7979

8080

8181
@plan_representation_bindable.field("isTrialPlan")
82-
def resolve_is_trial(plan_data: PlanData, info) -> bool:
83-
return plan_data["is_trial_plan"]
82+
def resolve_is_trial(plan_data: Plan, info) -> bool:
83+
return plan_data.is_trial_plan

requirements.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ freezegun
2525
google-cloud-pubsub
2626
gunicorn>=22.0.0
2727
https://github.com/codecov/opentelem-python/archive/refs/tags/v0.0.4a1.tar.gz#egg=codecovopentelem
28-
https://github.com/codecov/shared/archive/69b736859ab71e1e3e91018439a6cb6b792502f3.tar.gz#egg=shared
28+
https://github.com/codecov/shared/archive/016a756f2ab982016bc2d46e2467be71604c0ba5.tar.gz#egg=shared
2929
https://github.com/photocrowd/django-cursor-pagination/archive/f560902696b0c8509e4d95c10ba0d62700181d84.tar.gz
3030
idna>=3.7
3131
minio

requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ sentry-sdk[celery]==2.13.0
416416
# shared
417417
setproctitle==1.1.10
418418
# via -r requirements.in
419-
shared @ https://github.com/codecov/shared/archive/69b736859ab71e1e3e91018439a6cb6b792502f3.tar.gz
419+
shared @ https://github.com/codecov/shared/archive/016a756f2ab982016bc2d46e2467be71604c0ba5.tar.gz
420420
# via -r requirements.in
421421
simplejson==3.17.2
422422
# via -r requirements.in

services/task/task_router.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import shared.celery_config as shared_celery_config
2-
from shared.billing import BillingPlan
32
from shared.celery_router import route_tasks_based_on_user_plan
3+
from shared.plan.constants import DEFAULT_FREE_PLAN
44

55
from codecov_auth.models import Owner
66
from compare.models import CommitComparison
@@ -14,14 +14,14 @@ def _get_user_plan_from_ownerid(ownerid, *args, **kwargs) -> str:
1414
owner = Owner.objects.filter(ownerid=ownerid).first()
1515
if owner:
1616
return owner.plan
17-
return BillingPlan.users_basic.db_name
17+
return DEFAULT_FREE_PLAN
1818

1919

2020
def _get_user_plan_from_repoid(repoid, *args, **kwargs) -> str:
2121
repo = Repository.objects.filter(repoid=repoid).first()
2222
if repo and repo.author:
2323
return repo.author.plan
24-
return BillingPlan.users_basic.db_name
24+
return DEFAULT_FREE_PLAN
2525

2626

2727
def _get_user_plan_from_profiling_commit(profiling_id, *args, **kwargs) -> str:
@@ -32,7 +32,7 @@ def _get_user_plan_from_profiling_commit(profiling_id, *args, **kwargs) -> str:
3232
and profiling_commit.repository.author
3333
):
3434
return profiling_commit.repository.author.plan
35-
return BillingPlan.users_basic.db_name
35+
return DEFAULT_FREE_PLAN
3636

3737

3838
def _get_user_plan_from_profiling_upload(profiling_upload_id, *args, **kwargs) -> str:
@@ -44,7 +44,7 @@ def _get_user_plan_from_profiling_upload(profiling_upload_id, *args, **kwargs) -
4444
and profiling_upload.profiling_commit.repository.author
4545
):
4646
return profiling_upload.profiling_commit.repository.author.plan
47-
return BillingPlan.users_basic.db_name
47+
return DEFAULT_FREE_PLAN
4848

4949

5050
def _get_user_plan_from_comparison_id(comparison_id, *args, **kwargs) -> str:
@@ -60,7 +60,7 @@ def _get_user_plan_from_comparison_id(comparison_id, *args, **kwargs) -> str:
6060
and compare_commit.compare_commit.repository.author
6161
):
6262
return compare_commit.compare_commit.repository.author.plan
63-
return BillingPlan.users_basic.db_name
63+
return DEFAULT_FREE_PLAN
6464

6565

6666
def _get_user_plan_from_label_request_id(request_id, *args, **kwargs) -> str:
@@ -76,7 +76,7 @@ def _get_user_plan_from_label_request_id(request_id, *args, **kwargs) -> str:
7676
and label_analysis_request.head_commit.repository.author
7777
):
7878
return label_analysis_request.head_commit.repository.author.plan
79-
return BillingPlan.users_basic.db_name
79+
return DEFAULT_FREE_PLAN
8080

8181

8282
def _get_user_plan_from_suite_id(suite_id, *args, **kwargs) -> str:
@@ -92,7 +92,7 @@ def _get_user_plan_from_suite_id(suite_id, *args, **kwargs) -> str:
9292
and static_analysis_suite.commit.repository.author
9393
):
9494
return static_analysis_suite.commit.repository.author.plan
95-
return BillingPlan.users_basic.db_name
95+
return DEFAULT_FREE_PLAN
9696

9797

9898
def _get_user_plan_from_task(task_name: str, task_kwargs: dict) -> str:
@@ -119,7 +119,7 @@ def _get_user_plan_from_task(task_name: str, task_kwargs: dict) -> str:
119119
shared_celery_config.static_analysis_task_name: _get_user_plan_from_suite_id,
120120
}
121121
func_to_use = owner_plan_lookup_funcs.get(
122-
task_name, lambda *args, **kwargs: BillingPlan.users_basic.db_name
122+
task_name, lambda *args, **kwargs: DEFAULT_FREE_PLAN
123123
)
124124
return func_to_use(**task_kwargs)
125125

0 commit comments

Comments
 (0)