xync-schema 0.6.71__tar.gz → 0.6.72__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {xync_schema-0.6.71/xync_schema.egg-info → xync_schema-0.6.72}/PKG-INFO +1 -1
- {xync_schema-0.6.71 → xync_schema-0.6.72}/xync_schema/enums.py +2 -3
- {xync_schema-0.6.71 → xync_schema-0.6.72}/xync_schema/models.py +8 -7
- {xync_schema-0.6.71 → xync_schema-0.6.72}/xync_schema/pydantic.py +31 -34
- {xync_schema-0.6.71 → xync_schema-0.6.72/xync_schema.egg-info}/PKG-INFO +1 -1
- {xync_schema-0.6.71 → xync_schema-0.6.72}/.env.sample +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/.gitignore +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/.pre-commit-config.yaml +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/README.md +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/makefile +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/pyproject.toml +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/setup.cfg +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/tests/__init__.py +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/tests/test_db.py +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/xync_schema/__init__.py +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/xync_schema.egg-info/SOURCES.txt +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/xync_schema.egg-info/dependency_links.txt +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/xync_schema.egg-info/requires.txt +0 -0
- {xync_schema-0.6.71 → xync_schema-0.6.72}/xync_schema.egg-info/top_level.txt +0 -0
|
@@ -112,9 +112,7 @@ class ExAction(IntEnum):
|
|
|
112
112
|
coins = 22 # Список торгуемых монет (с ограничениям по валютам, если есть)
|
|
113
113
|
pairs = 23 # Список пар валюта/монет
|
|
114
114
|
ads = 24 # Список объяв по покупке/продаже, валюте, монете, платежному методу (buy/sell, cur, coin, pm)
|
|
115
|
-
ad = 42 #
|
|
116
|
-
cur_mins = 43 # Минимальные объемы валют в объявлении
|
|
117
|
-
coin_mins = 44 # Минимальные объемы монет в объявлении
|
|
115
|
+
ad = 42 # Чужая объява по id
|
|
118
116
|
""" Agent: Fiat """
|
|
119
117
|
my_fiats = 25 # Список реквизитов моих платежных методов
|
|
120
118
|
fiat_new = 26 # Создание реквизита моего платежного метода
|
|
@@ -122,6 +120,7 @@ class ExAction(IntEnum):
|
|
|
122
120
|
fiat_del = 28 # Удаление реквизита моего платежного метода
|
|
123
121
|
""" Agent: Ad """
|
|
124
122
|
my_ads = 29 # Список моих объявлений
|
|
123
|
+
my_ad = 43 # Моя объява по id
|
|
125
124
|
ad_new = 30 # Создание объявления
|
|
126
125
|
ad_upd = 31 # Редактирование объявления
|
|
127
126
|
ad_del = 32 # Удаление объявления
|
|
@@ -69,7 +69,7 @@ class Ex(Model):
|
|
|
69
69
|
pmcurs: fields.ManyToManyRelation["Pmcur"] = fields.ManyToManyField("models.Pmcur", through="pmcurex")
|
|
70
70
|
coins: fields.ManyToManyRelation[Coin]
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
contragents: fields.ReverseRelation["Contragent"]
|
|
73
73
|
pmexs: fields.ReverseRelation["Pmex"]
|
|
74
74
|
pairs: fields.ReverseRelation["Pair"]
|
|
75
75
|
# deps: fields.ReverseRelation["Dep"]
|
|
@@ -159,7 +159,7 @@ class User(Model, TsTrait, UserInfoTrait):
|
|
|
159
159
|
|
|
160
160
|
proteges: fields.BackwardFKRelation["User"]
|
|
161
161
|
agents: fields.BackwardFKRelation["Agent"]
|
|
162
|
-
fiats: fields.BackwardFKRelation["Fiat"]
|
|
162
|
+
# fiats: fields.BackwardFKRelation["Fiat"]
|
|
163
163
|
limits: fields.BackwardFKRelation["Limit"]
|
|
164
164
|
# vpn: fields.BackwardOneToOneRelation["Vpn"]
|
|
165
165
|
# invite_requests: fields.BackwardFKRelation["Invite"]
|
|
@@ -196,15 +196,16 @@ class Contragent(Model):
|
|
|
196
196
|
updated_at: datetime | None = DatetimeSecField(auto_now=True)
|
|
197
197
|
|
|
198
198
|
agent: fields.BackwardOneToOneRelation["Agent"]
|
|
199
|
-
|
|
199
|
+
creds: fields.BackwardFKRelation["Cred"]
|
|
200
200
|
my_ads: fields.BackwardFKRelation["Ad"]
|
|
201
|
+
taken_orders: fields.BackwardFKRelation["Order"]
|
|
201
202
|
|
|
202
203
|
class Meta:
|
|
203
204
|
table_description = "Agents"
|
|
204
205
|
unique_together = (("ex", "exid"),)
|
|
205
206
|
|
|
206
207
|
|
|
207
|
-
class Agent(Model):
|
|
208
|
+
class Agent(Model, TsTrait):
|
|
208
209
|
auth: dict[str, str] = fields.JSONField(null=True)
|
|
209
210
|
contragent: fields.OneToOneRelation[Contragent] = fields.OneToOneField("models.Contragent", "agent")
|
|
210
211
|
contragent_id: int
|
|
@@ -373,8 +374,8 @@ class PmexBank(BaseModel): # banks for SBP
|
|
|
373
374
|
unique_together = (("pmex", "exid"),)
|
|
374
375
|
|
|
375
376
|
|
|
376
|
-
class
|
|
377
|
-
pmexbank: fields.ForeignKeyRelation[PmexBank] = fields.ForeignKeyField("models.PmexBank", "
|
|
377
|
+
class CredBank(BaseModel): # banks for SBP
|
|
378
|
+
pmexbank: fields.ForeignKeyRelation[PmexBank] = fields.ForeignKeyField("models.PmexBank", "credbanks")
|
|
378
379
|
pmexbank_id: int
|
|
379
380
|
cred: fields.ForeignKeyRelation["Cred"] = fields.ForeignKeyField("models.Cred", "credbanks")
|
|
380
381
|
cred_id: int
|
|
@@ -528,7 +529,7 @@ class Order(Model):
|
|
|
528
529
|
class PydanticMeta(Model.PydanticMeta):
|
|
529
530
|
max_recursion: int = 0
|
|
530
531
|
exclude_raw_fields: bool = False
|
|
531
|
-
exclude = ("taker", "ad", "
|
|
532
|
+
exclude = ("taker", "ad", "cred", "msgs")
|
|
532
533
|
|
|
533
534
|
|
|
534
535
|
class Msg(Model):
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
|
-
|
|
3
2
|
from pydantic import BaseModel, model_validator
|
|
4
3
|
|
|
5
4
|
from xync_schema.enums import AdStatus, PmType
|
|
6
|
-
from xync_schema.models import
|
|
5
|
+
from xync_schema.models import Direction, Pmcur, Ex, Cred, Contragent
|
|
7
6
|
|
|
8
7
|
|
|
9
8
|
class _CurCoin(BaseModel):
|
|
@@ -58,20 +57,15 @@ class FiatNew(FiatUpd):
|
|
|
58
57
|
target: int | None = None
|
|
59
58
|
|
|
60
59
|
|
|
61
|
-
class
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
class CredPydIn(BaseModel):
|
|
61
|
+
id: int | None = None
|
|
62
|
+
exid: str
|
|
63
|
+
ex: Ex | None = None
|
|
64
|
+
ex_id: int | None = None
|
|
66
65
|
pmcur_id: int | None = None
|
|
67
66
|
pmcur: Pmcur | None = None
|
|
68
|
-
# df
|
|
69
67
|
detail: str
|
|
70
68
|
name: str = ""
|
|
71
|
-
amount: float
|
|
72
|
-
target: float | None = None
|
|
73
|
-
|
|
74
|
-
banks: list[str] = []
|
|
75
69
|
|
|
76
70
|
class Config:
|
|
77
71
|
arbitrary_types_allowed = True
|
|
@@ -79,24 +73,21 @@ class FiatPydIn(BaseModel):
|
|
|
79
73
|
@classmethod
|
|
80
74
|
@model_validator(mode="before")
|
|
81
75
|
def check_at_least_one_field(cls, values):
|
|
82
|
-
if (values.get("
|
|
76
|
+
if (values.get("ex") or values.get("ex_id")) and (values.get("pmcur") or values.get("pmcur_id")):
|
|
83
77
|
return values
|
|
84
|
-
raise ValueError("
|
|
78
|
+
raise ValueError("ex(_id) and pmcur(_id) is required")
|
|
85
79
|
|
|
86
|
-
def args(self) -> tuple[dict, dict]:
|
|
87
|
-
unq: tuple[str, ...] = "id", "user_id", "user", "pmcur_id", "pmcur"
|
|
88
|
-
df: tuple[str, ...] = "detail", "name", "amount", "target"
|
|
89
|
-
d = self.model_dump()
|
|
90
|
-
return {k: getattr(self, k) for k in df if d.get(k)}, {k: getattr(self, k) for k in unq if d.get(k)}
|
|
91
80
|
|
|
81
|
+
class FiatPydIn(BaseModel):
|
|
82
|
+
# unq
|
|
83
|
+
id: int = None
|
|
84
|
+
cred_id: int | None = None
|
|
85
|
+
cred: Cred | None = None
|
|
86
|
+
# df
|
|
87
|
+
amount: float
|
|
88
|
+
target: float | None = None
|
|
92
89
|
|
|
93
|
-
|
|
94
|
-
id: int | None = None
|
|
95
|
-
exid: str
|
|
96
|
-
ex: Ex | None = None
|
|
97
|
-
ex_id: int | None = None
|
|
98
|
-
fiat: Fiat | None = None
|
|
99
|
-
fiat_id: int | None = None
|
|
90
|
+
banks: list[str] = []
|
|
100
91
|
|
|
101
92
|
class Config:
|
|
102
93
|
arbitrary_types_allowed = True
|
|
@@ -104,9 +95,15 @@ class FiatexPydIn(BaseModel):
|
|
|
104
95
|
@classmethod
|
|
105
96
|
@model_validator(mode="before")
|
|
106
97
|
def check_at_least_one_field(cls, values):
|
|
107
|
-
if
|
|
98
|
+
if values.get("cred") or values.get("cred_id"):
|
|
108
99
|
return values
|
|
109
|
-
raise ValueError("
|
|
100
|
+
raise ValueError("cred(_id) is required")
|
|
101
|
+
|
|
102
|
+
def args(self) -> tuple[dict, dict]:
|
|
103
|
+
unq: tuple[str, ...] = "id", "cred_id", "cred"
|
|
104
|
+
df: tuple[str, ...] = "amount", "target"
|
|
105
|
+
d = self.model_dump()
|
|
106
|
+
return {k: getattr(self, k) for k in df if d.get(k)}, {k: getattr(self, k) for k in unq if d.get(k)}
|
|
110
107
|
|
|
111
108
|
|
|
112
109
|
class BaseAd(BaseModel):
|
|
@@ -120,9 +117,9 @@ class AdPydIn(BaseAd):
|
|
|
120
117
|
detail: str | None = None
|
|
121
118
|
auto_msg: str | None = None
|
|
122
119
|
status: AdStatus = AdStatus.active
|
|
123
|
-
|
|
120
|
+
maker_id: int | None = None
|
|
121
|
+
maker: Contragent | None = None
|
|
124
122
|
direction_id: int | None = None
|
|
125
|
-
agent: Agent | None = None
|
|
126
123
|
direction: Direction | None = None
|
|
127
124
|
pms_: list | None = None
|
|
128
125
|
fiats_: list | None = None
|
|
@@ -133,12 +130,12 @@ class AdPydIn(BaseAd):
|
|
|
133
130
|
@classmethod
|
|
134
131
|
@model_validator(mode="before")
|
|
135
132
|
def check_at_least_one_field(cls, values):
|
|
136
|
-
|
|
133
|
+
maker = values.get("maker") or values.get("maker_id")
|
|
137
134
|
direction = values.get("direction") or values.get("direction_id")
|
|
138
135
|
pms_or_fiats = values.get("pms_") or values.get("fiats_")
|
|
139
|
-
if
|
|
136
|
+
if maker and direction and pms_or_fiats:
|
|
140
137
|
return values
|
|
141
|
-
raise ValueError("(pms or fiats) and
|
|
138
|
+
raise ValueError("(pms or fiats) and maker(_id) and direction(_id) is required")
|
|
142
139
|
|
|
143
140
|
|
|
144
141
|
class OrderPyd(BaseModel):
|
|
@@ -146,7 +143,7 @@ class OrderPyd(BaseModel):
|
|
|
146
143
|
amount: float
|
|
147
144
|
status: str
|
|
148
145
|
actions: dict | None = {}
|
|
149
|
-
|
|
146
|
+
cred: Cred.pyd()
|
|
150
147
|
is_sell: bool
|
|
151
148
|
contragent: int | None = None
|
|
152
149
|
created_at: datetime
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|