Remove back-end references to old Premium plans

This commit is contained in:
Vincent 2022-10-04 14:06:49 -10:00 коммит произвёл Vincent
Родитель 9529dd21f3
Коммит 1513e44565
10 изменённых файлов: 9 добавлений и 225 удалений

Просмотреть файл

@ -36,7 +36,6 @@ TWILIO_AUTH_TOKEN=
TWILIO_SMS_APPLICATION_SID=
TWILIO_MESSAGING_SERVICE_SID=
TWILIO_MAIN_NUMBER=
PREMIUM_PROD_ID=prod_K29ULZL9pUR9Fr
PERIODICAL_PREMIUM_PROD_ID=prod_KGizMiBqUJdYoY
PHONE_PROD_ID=prod_KGizMiBqUJdYoY
BUNDLE_PROD_ID=prod_MIex7Q079igFZJ

Просмотреть файл

@ -8,7 +8,6 @@ from .views import (
RelayAddressViewSet,
ProfileViewSet,
UserViewSet,
premium_countries,
report_webcompat_issue,
runtime_data,
schema_view,
@ -36,7 +35,6 @@ api_router.register(r"users", UserViewSet, "user")
urlpatterns = [
path("v1/premium_countries", premium_countries, name="premium_countries"),
path("v1/runtime_data", runtime_data, name="runtime_data"),
path(
"v1/report_webcompat_issue",

Просмотреть файл

@ -27,7 +27,6 @@ from emails.utils import incr_if_enabled
from privaterelay.utils import (
get_countries_info_from_request_and_mapping,
get_premium_countries_info_from_request,
)
from emails.models import (
@ -160,14 +159,6 @@ class UserViewSet(viewsets.ModelViewSet):
return User.objects.filter(id=self.request.user.id)
# Deprecated; prefer runtime_data instead.
# (This method isn't deleted yet, because the add-on still calls it.)
@decorators.api_view()
@decorators.permission_classes([permissions.AllowAny])
def premium_countries(request):
return response.Response(get_premium_countries_info_from_request(request))
@decorators.api_view()
@decorators.permission_classes([permissions.AllowAny])
def runtime_data(request):
@ -183,9 +174,7 @@ def runtime_data(request):
"PERIODICAL_PREMIUM_PRODUCT_ID": settings.PERIODICAL_PREMIUM_PROD_ID,
"GOOGLE_ANALYTICS_ID": settings.GOOGLE_ANALYTICS_ID,
"BUNDLE_PRODUCT_ID": settings.BUNDLE_PROD_ID,
"PREMIUM_PRODUCT_ID": settings.PREMIUM_PROD_ID,
"PHONE_PRODUCT_ID": settings.PHONE_PROD_ID,
"PREMIUM_PLANS": get_premium_countries_info_from_request(request),
"PERIODICAL_PREMIUM_PLANS": get_countries_info_from_request_and_mapping(
request, settings.PERIODICAL_PREMIUM_PLAN_COUNTRY_LANG_MAPPING
),

Просмотреть файл

@ -160,7 +160,7 @@ class Profile(models.Model):
# This method returns whether the locale associated with the user's Firefox account
# includes a country code from a Premium country. This is less accurate than using
# get_premium_countries_info_from_request(), which uses a GeoIP lookup, so prefer
# get_countries_info_from_request_and_mapping(), which uses a GeoIP lookup, so prefer
# using that if a request context is available. In other contexts, e.g. when
# sending an email, this method can be useful.
@property
@ -171,7 +171,7 @@ class Profile(models.Model):
len(accept_langs) >= 1
and len(accept_langs[0][0].split("-")) >= 2
and accept_langs[0][0].split("-")[1]
in settings.PREMIUM_PLAN_COUNTRY_LANG_MAPPING.keys()
in settings.PERIODICAL_PREMIUM_PLAN_COUNTRY_LANG_MAPPING.keys()
):
return True
# If a language but no country is known, check if there's a country
@ -182,7 +182,7 @@ class Profile(models.Model):
len(accept_langs) >= 1
and len(accept_langs[0][0].split("-")) == 1
and accept_langs[0][0].split("-")[0]
in settings.PREMIUM_PLAN_COUNTRY_LANG_MAPPING.keys()
in settings.PERIODICAL_PREMIUM_PLAN_COUNTRY_LANG_MAPPING.keys()
):
return True
return False

Просмотреть файл

@ -4,8 +4,7 @@ from functools import lru_cache
from django.conf import settings
from django.db.models import prefetch_related_objects
from .templatetags.relay_tags import premium_plan_price
from .utils import get_premium_countries_info_from_request
from .utils import get_countries_info_from_request_and_mapping
def django_settings(request):
@ -17,7 +16,9 @@ def common(request):
avatar = fxa.extra_data["avatar"] if fxa else None
accept_language = request.headers.get("Accept-Language", "en-US")
country_code = request.headers.get("X-Client-Region", "us").lower()
premium_countries_vars = get_premium_countries_info_from_request(request)
premium_countries_vars = get_countries_info_from_request_and_mapping(
request, settings.PERIODICAL_PREMIUM_PLAN_COUNTRY_LANG_MAPPING
)
csat_dismissal_cookie, reason_to_show_csat_survey = _get_csat_cookie_and_reason(
request
@ -35,9 +36,6 @@ def common(request):
"country_code": country_code,
"show_csat": show_csat,
"csat_dismissal_cookie": csat_dismissal_cookie,
"monthly_price": premium_plan_price(
accept_language, premium_countries_vars["country_code"]
),
}
return {**common_vars, **premium_countries_vars}

Просмотреть файл

@ -315,7 +315,6 @@ TEMPLATES = [
RELAY_FIREFOX_DOMAIN = config("RELAY_FIREFOX_DOMAIN", "relay.firefox.com", cast=str)
MOZMAIL_DOMAIN = config("MOZMAIL_DOMAIN", "mozmail.com", cast=str)
MAX_NUM_FREE_ALIASES = config("MAX_NUM_FREE_ALIASES", 5, cast=int)
PREMIUM_PROD_ID = config("PREMIUM_PROD_ID", "", cast=str)
PERIODICAL_PREMIUM_PROD_ID = config("PERIODICAL_PREMIUM_PROD_ID", "", cast=str)
PREMIUM_PLAN_ID_US_MONTHLY = config(
"PREMIUM_PLAN_ID_US_MONTHLY", "price_1LXUcnJNcmPzuWtRpbNOajYS", cast=str
@ -334,132 +333,6 @@ BUNDLE_PROD_ID = config("BUNDLE_PROD_ID", "", cast=str)
BUNDLE_PLAN_ID_US = config(
"BUNDLE_PLAN_ID_US", "price_1LwoSDJNcmPzuWtR6wPJZeoh", cast=str
)
PREMIUM_PRICE_ID_OVERRIDE = config("PREMIUM_PRICE_ID_OVERRIDE", "", cast=str)
PREMIUM_PLAN_ID_MATRIX = {
"chf": {
"de": {
"id": "price_1JmRM0JNcmPzuWtRzCJ2LQHP",
"price": "CHF 1.00",
},
"fr": {
"id": "price_1JmRFrJNcmPzuWtROOs10fKh",
"price": "CHF 1.00",
},
"it": {
"id": "price_1JmREHJNcmPzuWtRxo7MoT58",
"price": "CHF 1.00",
},
},
"euro": {
"at": {
"id": "price_1JmRTDJNcmPzuWtRnJavIXXX",
"price": "0,99 €",
},
"de": {
"id": "price_1JmRTDJNcmPzuWtRnJavIXXX",
"price": "0,99 €",
},
"en": {
"id": "price_1JmRCQJNcmPzuWtRprMnmtax",
"price": "0,99 €",
},
"es": {
"id": "price_1JmRPSJNcmPzuWtRVvkEkVbS",
"price": "0,99 €",
},
"fr": {
"id": "price_1JmRU4JNcmPzuWtRRhu1FhiQ",
"price": "0,99 €",
},
"it": {
"id": "price_1JmRQLJNcmPzuWtRGs76IkUY",
"price": "0,99 €",
},
"nl": {
"id": "price_1JmROfJNcmPzuWtR6od8OfDW",
"price": "0,99 €",
},
"ie": {
"id": "price_1JmRCQJNcmPzuWtRprMnmtax",
"price": "0,99 €",
},
"se": {
"id": "price_1KQc1PJNcmPzuWtRsEfb6inB",
"price": "0,99 €",
},
"fi": {
"id": "price_1KQcA7JNcmPzuWtRPKNacfdn",
"price": "0,99 €",
},
},
"usd": {"en": {"id": "price_1JmRSRJNcmPzuWtRN9MG5cBy", "price": "$0.99"}},
}
PREMIUM_PLAN_COUNTRY_LANG_MAPPING = {
# Austria
"at": {"de": PREMIUM_PLAN_ID_MATRIX["euro"]["de"]},
# Belgium
"be": {
"fr": PREMIUM_PLAN_ID_MATRIX["euro"]["fr"],
"de": PREMIUM_PLAN_ID_MATRIX["euro"]["de"],
"nl": PREMIUM_PLAN_ID_MATRIX["euro"]["nl"],
},
# Switzerland
"ch": {
"fr": PREMIUM_PLAN_ID_MATRIX["chf"]["fr"],
"de": PREMIUM_PLAN_ID_MATRIX["chf"]["de"],
"it": PREMIUM_PLAN_ID_MATRIX["chf"]["it"],
},
# Germany
"de": {
"de": PREMIUM_PLAN_ID_MATRIX["euro"]["de"],
},
# Spain
"es": {
"es": PREMIUM_PLAN_ID_MATRIX["euro"]["es"],
},
# France
"fr": {
"fr": PREMIUM_PLAN_ID_MATRIX["euro"]["fr"],
},
# Ireland
"ie": {
"en": PREMIUM_PLAN_ID_MATRIX["euro"]["en"],
},
# Italy
"it": {
"it": PREMIUM_PLAN_ID_MATRIX["euro"]["it"],
},
# Netherlands
"nl": {
"nl": PREMIUM_PLAN_ID_MATRIX["euro"]["nl"],
},
# Sweden
"se": {
"sv": PREMIUM_PLAN_ID_MATRIX["euro"]["se"],
},
# Finland
"fi": {
"fi": PREMIUM_PLAN_ID_MATRIX["euro"]["fi"],
},
"us": {
"en": PREMIUM_PLAN_ID_MATRIX["usd"]["en"],
},
"gb": {
"en": PREMIUM_PLAN_ID_MATRIX["usd"]["en"],
},
"ca": {
"en": PREMIUM_PLAN_ID_MATRIX["usd"]["en"],
},
"nz": {
"en": PREMIUM_PLAN_ID_MATRIX["usd"]["en"],
},
"my": {
"en": PREMIUM_PLAN_ID_MATRIX["usd"]["en"],
},
"sg": {
"en": PREMIUM_PLAN_ID_MATRIX["usd"]["en"],
},
}
PERIODICAL_PREMIUM_PLAN_ID_MATRIX = {
"chf": {

Просмотреть файл

@ -30,27 +30,3 @@ def message_in_fluent(message):
"error-premium-check-subdomain",
]
return message in ftl_messages
@register.simple_tag
def premium_plan_id(accept_lang, cc=None):
if settings.PREMIUM_PRICE_ID_OVERRIDE:
return settings.PREMIUM_PRICE_ID_OVERRIDE
cc, lang = get_premium_country_lang(accept_lang, cc)
if cc in settings.PREMIUM_PLAN_COUNTRY_LANG_MAPPING:
return settings.PREMIUM_PLAN_COUNTRY_LANG_MAPPING[cc][lang]["id"]
return ""
@register.simple_tag
def premium_plan_price(accept_lang, cc=None):
cc, lang = get_premium_country_lang(accept_lang, cc)
if cc not in settings.PREMIUM_PLAN_COUNTRY_LANG_MAPPING:
cc = "us"
return settings.PREMIUM_PLAN_COUNTRY_LANG_MAPPING[cc][lang]["price"]
@register.simple_tag
def premium_subscribe_url(accept_lang=None, cc=None):
plan_id = premium_plan_id(accept_lang, cc)
return f"{settings.FXA_SUBSCRIPTIONS_URL}/products/{settings.PREMIUM_PROD_ID}?plan={plan_id}"

Просмотреть файл

@ -1,7 +1,5 @@
from django.conf import settings
from django.test import TestCase
from ..templatetags.relay_tags import premium_plan_id
from ..utils import get_premium_country_lang
@ -22,37 +20,3 @@ class GetPremiumCountryLangTest(TestCase):
cc, lang = get_premium_country_lang("de-be,", "at")
assert cc == "at"
assert lang == "de"
class PremiumPlanIDTest(TestCase):
def test_premium_plan_id_tag(self):
plans = settings.PREMIUM_PLAN_ID_MATRIX
plan_id = premium_plan_id("en-US", "us")
assert plan_id == plans["usd"]["en"]["id"]
plan_id = premium_plan_id("de", "de")
assert plan_id == plans["euro"]["de"]["id"]
plan_id = premium_plan_id("en-ca")
assert plan_id == plans["usd"]["en"]["id"]
plan_id = premium_plan_id("en-gb")
assert plan_id == plans["usd"]["en"]["id"]
plan_id = premium_plan_id("fr", "fr")
assert plan_id == plans["euro"]["fr"]["id"]
plan_id = premium_plan_id("it")
assert plan_id == plans["euro"]["it"]["id"]
plan_id = premium_plan_id("en-ie")
assert plan_id == plans["euro"]["ie"]["id"]
plan_id = premium_plan_id("en", "at")
assert plan_id == plans["euro"]["at"]["id"]
plan_id = premium_plan_id("sv", "se")
assert plan_id == plans["euro"]["se"]["id"]
plan_id = premium_plan_id("fi", "fi")
assert plan_id == plans["euro"]["fi"]["id"]

Просмотреть файл

@ -1,18 +1,6 @@
from django.conf import settings
def get_premium_countries_info_from_request(request):
country_code = _get_cc_from_request(request)
premium_countries = settings.PREMIUM_PLAN_COUNTRY_LANG_MAPPING.keys()
premium_available_in_country = country_code in premium_countries
return {
"country_code": country_code,
"premium_countries": premium_countries,
"premium_available_in_country": premium_available_in_country,
"plan_country_lang_mapping": settings.PREMIUM_PLAN_COUNTRY_LANG_MAPPING,
}
def get_countries_info_from_request_and_mapping(request, mapping):
country_code = _get_cc_from_request(request)
countries = mapping.keys()
@ -46,8 +34,8 @@ def get_premium_country_lang(accept_lang, cc=None):
if cc == "en":
cc = "us"
if cc in settings.PREMIUM_PLAN_COUNTRY_LANG_MAPPING.keys():
languages = settings.PREMIUM_PLAN_COUNTRY_LANG_MAPPING[cc]
if cc in settings.PERIODICAL_PREMIUM_PLAN_COUNTRY_LANG_MAPPING.keys():
languages = settings.PERIODICAL_PREMIUM_PLAN_COUNTRY_LANG_MAPPING[cc]
if lang in languages.keys():
return cc, lang
return cc, list(languages.keys())[0]

Просмотреть файл

@ -35,7 +35,6 @@ from emails.models import (
valid_available_subdomain,
)
from emails.utils import incr_if_enabled
from privaterelay.utils import get_premium_countries_info_from_request
FXA_PROFILE_CHANGE_EVENT = "https://schemas.accounts.firefox.com/event/profile-change"