Skip to content

Commit de5327b

Browse files
committed
fixprice checked
1 parent 9b340da commit de5327b

3 files changed

Lines changed: 122 additions & 0 deletions

File tree

openinflation_dataclass/card.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
from typing import Literal, TypedDict
2+
from io import BytesIO
3+
4+
5+
class WholesalePrice(TypedDict):
6+
from_items: float | int
7+
"""От какого кол-ва товаров начинает применяться скидка (включительно)"""
8+
price: float
9+
"""Цена за единицу товара"""
10+
11+
class Card:
12+
sku: str
13+
"""Уникальный внутренний код товара в системе учета компании."""
14+
plu: str | None
15+
"""Код для быстрого поиска цены на кассе."""
16+
source_page_url: str
17+
"""Ссылка на исходную страницу"""
18+
19+
title: str
20+
"""Название товара"""
21+
22+
abult: bool
23+
"""Помечен ли товар как 18+"""
24+
new: bool
25+
"""Отмечает ли магазин товар как новый"""
26+
promo: bool
27+
"""Отмечает ли магазин товар промо акцией"""
28+
season: bool
29+
"""Является ли товар сезонным"""
30+
hit: bool
31+
"""Отмечает ли магазин товар как хит"""
32+
data_matrix: bool
33+
"""Использует ли выбранный товар QR-код для пробива на кассе"""
34+
35+
brand_uid: str
36+
37+
price: float
38+
"""Регулярная цена"""
39+
discount_price: float | None
40+
"""Скидочная цена"""
41+
loyal_price: float | None
42+
"""Скидка по карте лояльности"""
43+
wholesale_price: list[WholesalePrice]
44+
"""Оптовая цена"""
45+
46+
price_unit: Literal["BYN", "RUB", "USD", "EUR", "AED"]
47+
"""Валюта цены"""
48+
49+
unit: Literal["PCE", "KGM", "LTR"]
50+
"""Единицы измерения товара по стандарту UNECE Rec 20"""
51+
available_count: float | int
52+
"""Доступное кол-во товара в магазине (для PCE допускается лишь int)"""
53+
54+
categories_uid: list[str]
55+
"""Список категорий которому соответсвует товар"""
56+
57+
main_image: BytesIO
58+
"""Главное изображение товара"""
59+
images: list[BytesIO]
60+
"""Остальные изображения товара (без главного)"""
61+
62+
# TODO brand class
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from typing import Literal, TYPE_CHECKING
2+
3+
if TYPE_CHECKING:
4+
from .tree import Category
5+
from .card import Card
6+
7+
class Schedule:
8+
"""Время формата HH:MM"""
9+
open_from: str
10+
closed_from: str
11+
12+
class AdministrativeUnit:
13+
settlement_type: Literal["village", "city"]
14+
15+
name: str
16+
country: Literal["BLR", "RUS", "USA", "ARE"]
17+
region: str
18+
19+
longitude: float
20+
latitude: float
21+
22+
class RetailUnit:
23+
retail_type: Literal["pickup_point", "store", "warehouse"]
24+
code: str
25+
26+
address: str
27+
28+
schedule_weekdays: Schedule
29+
schedule_saturday: Schedule
30+
schedule_sunday: Schedule
31+
temporarily_closed: bool
32+
33+
longitude: float
34+
latitude: float
35+
administrative_unit: AdministrativeUnit
36+
37+
categories: list[Category]
38+
products: list[Card]
39+

openinflation_dataclass/tree.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from io import BytesIO
2+
3+
class Category:
4+
uid: str
5+
"""Уникальный индефикатор на исходном источнике"""
6+
alias: str
7+
"""На английском, в нижнем регистре (цифры допустимы),
8+
вместо пробела нижнее подчеркивание _"""
9+
10+
title: str
11+
"""Заголовок на русском/английском"""
12+
abult: bool
13+
"""Имеет ли категория ограничения 18+"""
14+
15+
icon: BytesIO | None
16+
"""Квадратная иконка"""
17+
banner: BytesIO | None
18+
"""Прямоугольный баннер"""
19+
20+
children: list["Category"]
21+
"""Список суб-категорий"""

0 commit comments

Comments
 (0)