xync-schema 0.6.42__py3-none-any.whl → 0.6.44__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/enums.py CHANGED
@@ -11,14 +11,20 @@ class AdStatus(IntEnum):
11
11
 
12
12
 
13
13
  class OrderStatus(IntEnum):
14
- zero = 0
15
- active = 1
16
- two = 2
17
- three = 3
18
- done = 4
19
- fifth = 5
14
+ requested = 1
15
+ request_canceled = 2
16
+ created = 3
17
+ rejected = 4
18
+ paid = 5
20
19
  canceled = 6
21
- paid_and_canceled = 7
20
+ completed = 7
21
+ appealed_by_seller = 9
22
+ appealed_by_buyer = 10
23
+ seller_appeal_disputed_by_buyer = 11
24
+ buyer_appeal_disputed_by_seller = 12
25
+ appeal_canceled = 15
26
+ # todo: 8T - один вирт экшн на бездействие обеих сторон, а 12T и 13T - по отдельности?
27
+ # paid_and_canceled = 7
22
28
  # COMPLETED, PENDING, TRADING, BUYER_PAYED, DISTRIBUTING, COMPLETED, IN_APPEAL, CANCELLED, CANCELLED_BY_SYSTEM
23
29
 
24
30
 
xync_schema/models.py CHANGED
@@ -182,12 +182,14 @@ class User(Model, TsTrait):
182
182
  # computed = ["balance"]
183
183
 
184
184
 
185
- class Agent(Model, TsTrait):
186
- exid: int = fields.IntField()
185
+ class Agent(Model):
186
+ exid: int = fields.BigIntField()
187
187
  ex: fields.ForeignKeyRelation[Ex] = fields.ForeignKeyField("models.Ex", related_name="agents")
188
188
  auth: dict[str, str] = fields.JSONField(null=True)
189
189
  user: fields.ForeignKeyRelation[User] = fields.ForeignKeyField("models.User", related_name="agents")
190
190
  user_id: int
191
+ updated_at: datetime | None = DatetimeSecField(auto_now=True)
192
+
191
193
  assets: fields.ReverseRelation["Asset"]
192
194
  orders: fields.ReverseRelation["Order"]
193
195
  ads: fields.ReverseRelation["Ad"]
@@ -209,9 +211,6 @@ class Agent(Model, TsTrait):
209
211
  async def client(self):
210
212
  import sys
211
213
 
212
- if isinstance(self.ex, QuerySet):
213
- # noinspection PyTypeChecker
214
- self.ex: Ex = await self.ex
215
214
  client = sys.modules[f"xync_client.{self.ex.name}.agent"].Client
216
215
  return client(self)
217
216
 
@@ -233,8 +232,8 @@ class Ad(Model, TsTrait):
233
232
  pms: fields.ManyToManyRelation["Pm"] = fields.ManyToManyField("models.Pm", through="adpm") # only root pms
234
233
  maxFiat: float = fields.FloatField()
235
234
  minFiat: float = fields.FloatField()
236
- detail: str = fields.CharField(4095, null=True)
237
- autoMsg: str = fields.CharField(255, null=True)
235
+ detail: str | None = fields.CharField(4095, null=True)
236
+ autoMsg: str | None = fields.CharField(255, null=True)
238
237
  agent: fields.ForeignKeyRelation[Agent] = fields.ForeignKeyField("models.Agent", "ads")
239
238
  status: AdStatus = fields.IntEnumField(AdStatus)
240
239
 
@@ -330,7 +329,7 @@ class Fiat(Model):
330
329
  table_description = "Currency accounts balance"
331
330
 
332
331
  class PydanticMeta(Model.PydanticMeta):
333
- # max_recursion: int = 2
332
+ # max_recursion: int = 2
334
333
  backward_relations = False
335
334
  include = "id", "pmcur", "detail", "name", "amount"
336
335
 
@@ -388,7 +387,7 @@ class Asset(Model):
388
387
  max_recursion: int = 2 # default: 3
389
388
 
390
389
 
391
- class Order(Model, TsTrait):
390
+ class Order(Model):
392
391
  id: int = fields.BigIntField(True)
393
392
  ad: fields.ForeignKeyRelation[Ad] = fields.ForeignKeyField("models.Ad", related_name="ads")
394
393
  ad_id: int
@@ -398,17 +397,37 @@ class Order(Model, TsTrait):
398
397
  taker: fields.ForeignKeyRelation[Agent] = fields.ForeignKeyField("models.Agent", "orders")
399
398
  taker_id: int
400
399
  status: OrderStatus = fields.IntEnumField(OrderStatus)
401
- notify_pay_at: datetime | None = DatetimeSecField(null=True)
402
- confirm_pay_at: datetime | None = DatetimeSecField(null=True)
400
+ created_at: datetime | None = DatetimeSecField(auto_now_add=True)
401
+ payed_at: datetime | None = DatetimeSecField(null=True)
402
+ confirmed_at: datetime | None = DatetimeSecField(null=True)
403
+ appealed_at: datetime | None = DatetimeSecField(null=True)
403
404
 
404
405
  _name = {"fiat__pmcur__pm__name"}
405
406
 
406
407
  def repr(self):
407
408
  return f"{self.fiat.pmcur.pm.name}/{self.fiat_id}:{self.amount:.3g} {self.status.name}"
408
409
 
410
+ async def client(self):
411
+ import sys
412
+
413
+ if isinstance(self.ad, QuerySet):
414
+ # noinspection PyTypeChecker
415
+ self.ad: Ad = await self.ad.prefetch_related("agent__ex")
416
+ elif isinstance(self.ad, Ad) and isinstance(self.ad.agent, QuerySet):
417
+ # noinspection PyTypeChecker
418
+ self.ad.agent = await self.ad.agent.prefetch_related("ex")
419
+ elif isinstance(self.ad.agent, Agent) and isinstance(self.ad.agent.ex, QuerySet):
420
+ # noinspection PyTypeChecker
421
+ self.ad.agent.ex = await self.ad.agent.ex
422
+ client = sys.modules[f"xync_client.{self.ad.agent.ex.name}.order"].Client
423
+ return client(self)
424
+
409
425
  class Meta:
410
426
  table_description = "P2P Orders"
411
427
 
428
+ class PydanticMeta(Model.PydanticMeta):
429
+ exclude = ("taker",)
430
+
412
431
 
413
432
  # class Dep(Model, TsTrait):
414
433
  # pid: str = fields.CharField(31) # product_id
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xync-schema
3
- Version: 0.6.42
3
+ Version: 0.6.44
4
4
  Summary: XyncNet project database model schema
5
5
  Author-email: Mike Artemiev <mixartemev@gmail.com>
6
6
  License: EULA
@@ -10,9 +10,9 @@ Requires-Python: >=3.12
10
10
  Description-Content-Type: text/markdown
11
11
  Requires-Dist: xtg-auth
12
12
  Provides-Extra: dev
13
- Requires-Dist: build ; extra == 'dev'
14
- Requires-Dist: pytest-asyncio ; extra == 'dev'
15
- Requires-Dist: twine ; extra == 'dev'
13
+ Requires-Dist: build; extra == "dev"
14
+ Requires-Dist: pytest-asyncio; extra == "dev"
15
+ Requires-Dist: twine; extra == "dev"
16
16
 
17
17
  ## INSTALL
18
18
  ```bash
@@ -0,0 +1,8 @@
1
+ xync_schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ xync_schema/enums.py,sha256=Ys6MKg3sRL_XkzPZIFMGgfZrXKVa65hb-foNuRNQQ48,10361
3
+ xync_schema/models.py,sha256=zOC_9SqbwhyG4c0ZpgO0I20vYyFAln5mCmiAa6Inpf8,21046
4
+ xync_schema/pydantic.py,sha256=cyviSX1P2Cj6fLFq_IsrYdWB6gBOYwR4adPXrAmlP7g,274
5
+ xync_schema-0.6.44.dist-info/METADATA,sha256=4f6h2z66r6j2JDsVBxt43YYcCeMCHDEFRettylgVXdQ,3985
6
+ xync_schema-0.6.44.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
7
+ xync_schema-0.6.44.dist-info/top_level.txt,sha256=jN8IBDfVY8b85Byyk8v0Gyj_0yLB8FO56WV4EvcXWY4,12
8
+ xync_schema-0.6.44.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.5.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,8 +0,0 @@
1
- xync_schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- xync_schema/enums.py,sha256=hOX2jtSOa2_Pk4wasMS5JHlBDro8biMKiKRtfSJyBp0,10030
3
- xync_schema/models.py,sha256=EK-pigi1bTYWFiXSt7QqyPPEfkLfnS2WhjRjpdPyCjI,20220
4
- xync_schema/pydantic.py,sha256=cyviSX1P2Cj6fLFq_IsrYdWB6gBOYwR4adPXrAmlP7g,274
5
- xync_schema-0.6.42.dist-info/METADATA,sha256=fl8yaOPUDzN5DyfREKVw2jcX13d7UNiR2xs53jFAXt0,3988
6
- xync_schema-0.6.42.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
7
- xync_schema-0.6.42.dist-info/top_level.txt,sha256=jN8IBDfVY8b85Byyk8v0Gyj_0yLB8FO56WV4EvcXWY4,12
8
- xync_schema-0.6.42.dist-info/RECORD,,