xync-schema 0.6.69__py3-none-any.whl → 0.6.70__py3-none-any.whl

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/models.py CHANGED
@@ -26,7 +26,7 @@ from xync_schema.enums import ExType, AdStatus, AssetType, OrderStatus, ExAction
26
26
  class Cur(Model):
27
27
  id = fields.SmallIntField(True)
28
28
  ticker: str = fields.CharField(3, unique=True)
29
- rate: float | None = fields.FloatField(default=0)
29
+ rate: float | None = fields.FloatField(default=0, null=True)
30
30
  # country: str | None = fields.CharField(63, null=True)
31
31
 
32
32
  pms: fields.ManyToManyRelation["Pm"] = fields.ManyToManyField("models.Pm", through="pmcur")
@@ -84,11 +84,11 @@ class Ex(Model):
84
84
  class PydanticMeta(Model.PydanticMeta):
85
85
  include = "name", "logo"
86
86
 
87
- def client(self):
87
+ def client(self, agent: "Agent" = None):
88
88
  module_name = f"xync_client.{self.name}.ex"
89
89
  __import__(module_name)
90
90
  client = sys.modules[module_name].ExClient
91
- return client(self)
91
+ return client(self, agent)
92
92
 
93
93
 
94
94
  class Curex(BaseModel):
@@ -96,6 +96,7 @@ class Curex(BaseModel):
96
96
  ex: fields.ForeignKeyRelation[Ex] = fields.ForeignKeyField("models.Ex")
97
97
  exid: str = fields.CharField(31)
98
98
  minimum: float = fields.FloatField(null=True)
99
+ rounding_scale: int = fields.SmallIntField(null=True)
99
100
  # countries: fields.ManyToManyRelation[Country] = fields.ManyToManyField(
100
101
  # "models.Country", through="curexcountry", backward_key="curexs"
101
102
  # )
@@ -248,6 +249,16 @@ class Adpm(Model):
248
249
  table_description = "P2P Advertisements - Payment methods"
249
250
 
250
251
 
252
+ class Adfiat(Model):
253
+ ad: fields.ForeignKeyRelation["Ad"] = fields.ForeignKeyField("models.Ad")
254
+ fiat: fields.ForeignKeyRelation["Fiat"] = fields.ForeignKeyField("models.Fiat")
255
+
256
+ _name = {"ad__id", "fiat__id"}
257
+
258
+ class Meta:
259
+ table_description = "P2P Advertisements - Payment details"
260
+
261
+
251
262
  class Ad(Model, TsTrait):
252
263
  id: int = fields.BigIntField(True)
253
264
  direction: fields.ForeignKeyRelation[Direction] = fields.ForeignKeyField("models.Direction", related_name="ads")
xync_schema/pydantic.py CHANGED
@@ -3,7 +3,15 @@ from datetime import datetime
3
3
  from pydantic import BaseModel, model_validator
4
4
 
5
5
  from xync_schema.enums import AdStatus, PmType
6
- from xync_schema.models import Fiat, Agent, Direction, Pm, Pmcur, User
6
+ from xync_schema.models import Fiat, Agent, Direction, Pmcur, User, Ex
7
+
8
+
9
+ class CurEpyd(BaseModel):
10
+ exid: int | str
11
+ ticker: str
12
+ rate: float | None = None
13
+ minimum: int | None = None
14
+ rounding_scale: int | None = None
7
15
 
8
16
 
9
17
  class PmexBankPyd(BaseModel):
@@ -65,7 +73,7 @@ class FiatPydIn(BaseModel):
65
73
  def check_at_least_one_field(cls, values):
66
74
  if (values.get("pmcur") or values.get("pmcur_id")) and (values.get("user") or values.get("user_id")):
67
75
  return values
68
- raise ValueError("pmcur_id or pmcur is required")
76
+ raise ValueError("pmcur(_id) and user(_id) is required")
69
77
 
70
78
  def args(self) -> tuple[dict, dict]:
71
79
  unq: tuple[str, ...] = "id", "user_id", "user", "pmcur_id", "pmcur"
@@ -74,11 +82,23 @@ class FiatPydIn(BaseModel):
74
82
  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)}
75
83
 
76
84
 
77
- # class FiatexPyd(BaseModel):
78
- # id: int | None = None
79
- # exid: str
80
- # ex_id: int
81
- # fiat_id: int
85
+ class FiatexPydIn(BaseModel):
86
+ id: int | None = None
87
+ exid: str
88
+ ex: Ex | None = None
89
+ ex_id: int | None = None
90
+ fiat: Fiat | None = None
91
+ fiat_id: int | None = None
92
+
93
+ class Config:
94
+ arbitrary_types_allowed = True
95
+
96
+ @classmethod
97
+ @model_validator(mode="before")
98
+ def check_at_least_one_field(cls, values):
99
+ if (values.get("ex") or values.get("ex_id")) and (values.get("fiat") or values.get("fiat_id")):
100
+ return values
101
+ raise ValueError("ex(_id) and fiat(_id) is required")
82
102
 
83
103
 
84
104
  class BaseAd(BaseModel):
@@ -96,7 +116,8 @@ class AdPydIn(BaseAd):
96
116
  direction_id: int | None = None
97
117
  agent: Agent | None = None
98
118
  direction: Direction | None = None
99
- payMeths: list[Pm]
119
+ pms_: list | None = None
120
+ fiats_: list | None = None
100
121
 
101
122
  class Config:
102
123
  arbitrary_types_allowed = True
@@ -104,9 +125,12 @@ class AdPydIn(BaseAd):
104
125
  @classmethod
105
126
  @model_validator(mode="before")
106
127
  def check_at_least_one_field(cls, values):
107
- if (values.get("agent") or values.get("agent_id")) and (values.get("direction") or values.get("direction_id")):
128
+ agent = values.get("agent") or values.get("agent_id")
129
+ direction = values.get("direction") or values.get("direction_id")
130
+ pms_or_fiats = values.get("pms_") or values.get("fiats_")
131
+ if agent and direction and pms_or_fiats:
108
132
  return values
109
- raise ValueError("pmcur_id or pmcur is required")
133
+ raise ValueError("(pms or fiats) and agent(_id) and direction(_id) is required")
110
134
 
111
135
 
112
136
  class OrderPyd(BaseModel):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: xync-schema
3
- Version: 0.6.69
3
+ Version: 0.6.70
4
4
  Summary: XyncNet project database model schema
5
5
  Author-email: Mike Artemiev <mixartemev@gmail.com>
6
6
  License: EULA
@@ -0,0 +1,8 @@
1
+ xync_schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ xync_schema/enums.py,sha256=zPdnf6J--qaBoyin_qXO3z_UnfpiHGXVHKs9v3ug1Qk,12428
3
+ xync_schema/models.py,sha256=9nyibPT9ZPMWaiXHO3gBGipvN-P-h4sJjehOgH6ccUg,25126
4
+ xync_schema/pydantic.py,sha256=Xw7ARA2yV4QDako2Uw9rLw-pMjcpVTW-Sade3ARXZFQ,3936
5
+ xync_schema-0.6.70.dist-info/METADATA,sha256=nmh9EGERPywOssPlHY1ww6BJPHOl5pnmWtMmAVha8Dc,3985
6
+ xync_schema-0.6.70.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
7
+ xync_schema-0.6.70.dist-info/top_level.txt,sha256=jN8IBDfVY8b85Byyk8v0Gyj_0yLB8FO56WV4EvcXWY4,12
8
+ xync_schema-0.6.70.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- xync_schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- xync_schema/enums.py,sha256=zPdnf6J--qaBoyin_qXO3z_UnfpiHGXVHKs9v3ug1Qk,12428
3
- xync_schema/models.py,sha256=_IzK9e4H6lXl8VMjyl0m-Ir7RfrCHAc2JM0RZiWJxBA,24722
4
- xync_schema/pydantic.py,sha256=B2neARFVzQUkrzbkWKoNLvyUScq2TLaMAZTUgawh8ew,3142
5
- xync_schema-0.6.69.dist-info/METADATA,sha256=-3CtP6GunNW70ZewZmcc5YOKDBXAI9D7NWhxtpGI8PE,3985
6
- xync_schema-0.6.69.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
7
- xync_schema-0.6.69.dist-info/top_level.txt,sha256=jN8IBDfVY8b85Byyk8v0Gyj_0yLB8FO56WV4EvcXWY4,12
8
- xync_schema-0.6.69.dist-info/RECORD,,