Skip to content

Commit 981fe5f

Browse files
committed
priductsrip
1 parent e664537 commit 981fe5f

File tree

8 files changed

+21
-45
lines changed

8 files changed

+21
-45
lines changed

packages/models-library/src/models_library/api_schemas_webserver/products.py

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
from ..basic_types import IDStr, NonNegativeDecimal
1919
from ..emails import LowerCaseEmailStr
20-
from ..products import ProductName, StripePriceID, StripeTaxRateID
20+
from ..products import ProductName
2121
from ._base import InputSchema, OutputSchema
2222

2323

@@ -43,28 +43,6 @@ def _update_json_schema_extra(schema: JsonDict) -> None:
4343
)
4444

4545

46-
class ProductStripeInfoGet(BaseModel):
47-
stripe_price_id: StripePriceID
48-
stripe_tax_rate_id: StripeTaxRateID
49-
50-
@staticmethod
51-
def _update_json_schema_extra(schema: JsonDict) -> None:
52-
schema.update(
53-
{
54-
"examples": [
55-
{
56-
"stripe_price_id": "stripe-price-id",
57-
"stripe_tax_rate_id": "stripe-tax-rate-id",
58-
},
59-
]
60-
}
61-
)
62-
63-
model_config = ConfigDict(
64-
json_schema_extra=_update_json_schema_extra,
65-
)
66-
67-
6846
class CreditPriceGet(OutputSchema):
6947
product_name: str
7048
usd_per_credit: Annotated[

services/web/server/src/simcore_service_webserver/payments/_rpc_invoice.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22

33
from aiohttp import web
44
from models_library.api_schemas_webserver import WEBSERVER_RPC_NAMESPACE
5-
from models_library.api_schemas_webserver.products import (
6-
ProductStripeInfoGet,
7-
)
85
from models_library.emails import LowerCaseEmailStr
96
from models_library.payments import InvoiceDataGet, UserInvoiceAddress
107
from models_library.products import ProductName
@@ -30,8 +27,8 @@ async def get_invoice_data(
3027
credit_result: CreditResultDict = await products_service.get_credit_amount(
3128
app, dollar_amount=dollar_amount, product_name=product_name
3229
)
33-
product_stripe_info_get: ProductStripeInfoGet = (
34-
await products_service.get_product_stripe_info(app, product_name=product_name)
30+
product_stripe_info = await products_service.get_product_stripe_info(
31+
app, product_name=product_name
3532
)
3633
user_invoice_address: UserInvoiceAddress = await get_user_invoice_address(
3734
app, user_id=user_id
@@ -40,8 +37,8 @@ async def get_invoice_data(
4037

4138
return InvoiceDataGet(
4239
credit_amount=credit_result["credit_amount"],
43-
stripe_price_id=product_stripe_info_get.stripe_price_id,
44-
stripe_tax_rate_id=product_stripe_info_get.stripe_tax_rate_id,
40+
stripe_price_id=product_stripe_info.stripe_price_id,
41+
stripe_tax_rate_id=product_stripe_info.stripe_tax_rate_id,
4542
user_invoice_address=user_invoice_address,
4643
user_display_name=user_info.full_name,
4744
user_email=LowerCaseEmailStr(user_info.email),

services/web/server/src/simcore_service_webserver/products/_models.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
)
1111
from models_library.basic_types import NonNegativeDecimal
1212
from models_library.emails import LowerCaseEmailStr
13-
from models_library.products import ProductName
13+
from models_library.products import ProductName, StripePriceID, StripeTaxRateID
1414
from models_library.utils.change_case import snake_to_camel
1515
from pydantic import (
1616
BaseModel,
@@ -44,6 +44,11 @@ class CreditResultDict(TypedDict):
4444
credit_amount: Decimal
4545

4646

47+
class ProductStripeInfo(NamedTuple):
48+
stripe_price_id: StripePriceID
49+
stripe_tax_rate_id: StripeTaxRateID
50+
51+
4752
class PaymentFieldsTuple(NamedTuple):
4853
enabled: bool
4954
credits_per_usd: Decimal | None

services/web/server/src/simcore_service_webserver/products/_repository.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from typing import Any
44

55
import sqlalchemy as sa
6-
from models_library.api_schemas_webserver.products import ProductStripeInfoGet
76
from models_library.groups import GroupID
87
from models_library.products import ProductName
98
from simcore_postgres_database.constants import QUANTIZE_EXP_ARG
@@ -28,7 +27,7 @@
2827

2928
from ..constants import FRONTEND_APPS_AVAILABLE
3029
from ..db.base_repository import BaseRepository
31-
from ._models import PaymentFieldsTuple, Product
30+
from ._models import PaymentFieldsTuple, Product, ProductStripeInfo
3231

3332
_logger = logging.getLogger(__name__)
3433

@@ -159,7 +158,7 @@ async def get_product_latest_price_info_or_none(
159158

160159
async def get_product_stripe_info_or_none(
161160
self, product_name: str, connection: AsyncConnection | None = None
162-
) -> ProductStripeInfoGet | None:
161+
) -> ProductStripeInfo | None:
163162
async with pass_or_acquire_connection(self.engine, connection) as conn:
164163
latest_stripe_info = await get_product_latest_stripe_info_or_none(
165164
conn, product_name=product_name
@@ -168,7 +167,7 @@ async def get_product_stripe_info_or_none(
168167
return None
169168

170169
stripe_price_id, stripe_tax_rate_id = latest_stripe_info
171-
return ProductStripeInfoGet(
170+
return ProductStripeInfo(
172171
stripe_price_id=stripe_price_id, stripe_tax_rate_id=stripe_tax_rate_id
173172
)
174173

services/web/server/src/simcore_service_webserver/products/_service.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,14 @@
22
from typing import Any
33

44
from aiohttp import web
5-
from models_library.api_schemas_webserver.products import (
6-
ProductStripeInfoGet,
7-
)
85
from models_library.groups import GroupID
96
from models_library.products import ProductName
107
from pydantic import ValidationError
118
from servicelib.exceptions import InvalidConfig
129
from simcore_postgres_database.utils_products_prices import ProductPriceInfo
1310

1411
from ..constants import APP_PRODUCTS_KEY
15-
from ._models import CreditResultDict
12+
from ._models import CreditResultDict, ProductStripeInfo
1613
from ._repository import ProductRepository
1714
from .errors import (
1815
BelowMinimumPaymentError,
@@ -113,7 +110,7 @@ async def get_credit_amount(
113110

114111
async def get_product_stripe_info(
115112
app: web.Application, *, product_name: ProductName
116-
) -> ProductStripeInfoGet:
113+
) -> ProductStripeInfo:
117114
repo = ProductRepository.create_from_app(app)
118115

119116
product_stripe_info = await repo.get_product_stripe_info_or_none(product_name)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
from models_library.products import ProductName
22

3-
from ._models import CreditResultDict, Product
3+
from ._models import CreditResultDict, Product, ProductStripeInfo
44

55
__all__: tuple[str, ...] = (
66
"CreditResultDict",
77
"Product",
88
"ProductName",
9+
"ProductStripeInfo",
910
)
1011
# nopycln: file

services/web/server/tests/unit/with_dbs/04/products/test_products_repository.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import sqlalchemy as sa
1313
from aiohttp import web
1414
from aiohttp.test_utils import TestClient, make_mocked_request
15-
from models_library.api_schemas_webserver.products import ProductStripeInfoGet
1615
from models_library.products import ProductName
1716
from pytest_simcore.helpers.faker_factories import random_product, random_product_price
1817
from pytest_simcore.helpers.postgres_tools import sync_insert_and_get_row_lifespan
@@ -234,7 +233,7 @@ async def test_product_repository_get_product_stripe_info(
234233
):
235234
product_name = "tis"
236235
stripe_info = await product_repository.get_product_stripe_info_or_none(product_name)
237-
assert isinstance(stripe_info, ProductStripeInfoGet)
236+
assert stripe_info
238237

239238
product_name = "s4l"
240239
stripe_info = await product_repository.get_product_stripe_info_or_none(product_name)

services/web/server/tests/unit/with_dbs/04/products/test_products_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
import pytest
1010
from aiohttp import web
1111
from aiohttp.test_utils import TestServer
12-
from models_library.api_schemas_webserver.products import ProductStripeInfoGet
1312
from models_library.products import ProductName
1413
from pydantic import TypeAdapter, ValidationError
1514
from pytest_mock import MockerFixture
1615
from servicelib.exceptions import InvalidConfig
1716
from simcore_postgres_database.utils_products_prices import ProductPriceInfo
1817
from simcore_service_webserver.products import _service, products_service
18+
from simcore_service_webserver.products._models import ProductStripeInfo
1919
from simcore_service_webserver.products._repository import ProductRepository
2020
from simcore_service_webserver.products.errors import (
2121
BelowMinimumPaymentError,
@@ -166,7 +166,7 @@ async def test_get_product_stripe_info_with_repo_faking_data(
166166
)
167167

168168
# Test when stripe info is returned successfully
169-
expected_stripe_info = ProductStripeInfoGet(
169+
expected_stripe_info = ProductStripeInfo(
170170
stripe_price_id="price_id", stripe_tax_rate_id="tax_id"
171171
)
172172

0 commit comments

Comments
 (0)