xync-schema 0.0.53.dev1__tar.gz → 0.0.54.dev2__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.
Files changed (19) hide show
  1. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/.pre-commit-config.yaml +1 -1
  2. {xync_schema-0.0.53.dev1/xync_schema.egg-info → xync_schema-0.0.54.dev2}/PKG-INFO +1 -1
  3. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/xync_schema/enums.py +13 -3
  4. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/xync_schema/models.py +44 -17
  5. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2/xync_schema.egg-info}/PKG-INFO +1 -1
  6. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/.env.sample +0 -0
  7. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/.gitignore +0 -0
  8. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/README.md +0 -0
  9. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/makefile +0 -0
  10. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/pyproject.toml +0 -0
  11. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/setup.cfg +0 -0
  12. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/tests/__init__.py +0 -0
  13. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/tests/test_db.py +0 -0
  14. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/xync_schema/__init__.py +0 -0
  15. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/xync_schema/xtype.py +0 -0
  16. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/xync_schema.egg-info/SOURCES.txt +0 -0
  17. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/xync_schema.egg-info/dependency_links.txt +0 -0
  18. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/xync_schema.egg-info/requires.txt +0 -0
  19. {xync_schema-0.0.53.dev1 → xync_schema-0.0.54.dev2}/xync_schema.egg-info/top_level.txt +0 -0
@@ -31,7 +31,7 @@ repos:
31
31
 
32
32
  - repo: https://github.com/astral-sh/ruff-pre-commit
33
33
  ### Ruff version.
34
- rev: v0.12.5
34
+ rev: v0.14.4
35
35
  hooks:
36
36
  ### Run the linter.
37
37
  - id: ruff
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-schema
3
- Version: 0.0.53.dev1
3
+ Version: 0.0.54.dev2
4
4
  Summary: XyncNet project database model schema
5
5
  Author-email: Mike Artemiev <mixartemev@gmail.com>
6
6
  License: EULA
@@ -101,6 +101,13 @@ class FileType(IntEnum):
101
101
  jpeg = 10
102
102
 
103
103
 
104
+ class AgentStatus(IntEnum):
105
+ off = 0
106
+ race = 1
107
+ listen = 2
108
+ # ... = 4
109
+
110
+
104
111
  class SynonymType(IntEnum):
105
112
  name = 1
106
113
  ppo = 2
@@ -120,9 +127,12 @@ class SynonymType(IntEnum):
120
127
 
121
128
  class Boundary(IntEnum):
122
129
  no = 0
123
- left = 1
124
- right = 2
125
- both = 3
130
+ left_word = 1
131
+ right_word = 2
132
+ both_word = 3
133
+ left_all = 4
134
+ right_all = 5
135
+ both_all = 6
126
136
 
127
137
 
128
138
  class SbpStrict(IntEnum):
@@ -1,3 +1,4 @@
1
+ import re
1
2
  import struct
2
3
  import sys
3
4
  from uuid import UUID
@@ -132,7 +133,6 @@ class Ex(Model):
132
133
  url_login: str | None = CharField(63, null=True, description="With no protocol 'https://'")
133
134
  typ: ExType = IntEnumField(ExType)
134
135
  status: ExStatus = IntEnumField(ExStatus, default=ExStatus.plan)
135
- is_started: bool = BooleanField(default=False)
136
136
  logo: str = CharField(511, default="")
137
137
 
138
138
  ads: ManyToManyRelation["Ad"]
@@ -309,7 +309,7 @@ class User(TgUser, TsTrait):
309
309
  return int(await self.free_assets()) + int(await self.fiats_sum())
310
310
 
311
311
  async def balances(self, ctd: bool = True) -> dict[int, int | float]: # ctd - convert to decimal
312
- dbt = {
312
+ dbt = {1: 0, 2: 0, 3: 0} | {
313
313
  c: v * 10 ** (-s) if ctd else v
314
314
  for c, v, s in await Transaction.filter(receiver=self, status__gte=TS.signed)
315
315
  .prefetch_related("cur")
@@ -512,8 +512,8 @@ class Agent(Model, TsTrait):
512
512
  auth: dict = JSONField(default={})
513
513
  actor: OneToOneRelation[Actor] = OneToOneField("models.Actor", "agent", on_update=CASCADE)
514
514
  actor_id: int
515
- active: bool = BooleanField(null=True, default=False)
516
515
  expire_at: datetime | None = DatetimeSecField(null=True)
516
+ status: int = SmallIntField(default=0)
517
517
 
518
518
  assets: BackwardFKRelation["Asset"]
519
519
 
@@ -527,17 +527,13 @@ class Agent(Model, TsTrait):
527
527
  # include = "id", "actor__ex", "auth", "updated_at"
528
528
  # computed = ["balance"]
529
529
 
530
- def client(self, fbot, bbot):
530
+ def client(self, ex_cl, fbot, bbot, proxy=None):
531
531
  module_name = f"xync_client.{self.actor.ex.name}.agent"
532
532
  __import__(module_name)
533
533
  client = sys.modules[module_name].AgentClient
534
- return client(self, fbot, bbot, headers=self.auth.get("headers"), cookies=self.auth.get("cookies"))
535
-
536
- def in_client(self, fbot, bbot):
537
- module_name = f"xync_client.{self.actor.ex.name}.InAgent"
538
- __import__(module_name)
539
- client = sys.modules[module_name].InAgentClient
540
- return client(self, fbot, bbot)
534
+ return client(
535
+ self, ex_cl, fbot, bbot, headers=self.auth.get("headers"), cookies=self.auth.get("cookies"), proxy=proxy
536
+ )
541
537
 
542
538
 
543
539
  class Cond(Model, TsTrait):
@@ -611,6 +607,7 @@ class Pm(Model):
611
607
  pmcurs: BackwardFKRelation["PmCur"] # no need. use curs
612
608
  pmexs: BackwardFKRelation["PmEx"]
613
609
  agents: BackwardFKRelation["PmAgent"]
610
+ topupable: BackwardFKRelation["TopUpAble"]
614
611
 
615
612
  class Meta:
616
613
  table_description = "Payment methods"
@@ -698,7 +695,7 @@ class MyAd(Model): # Road
698
695
  pay_req: ForeignKeyNullableRelation["PayReq"] = ForeignKeyField(
699
696
  "models.PayReq", "maked_ads", on_update=CASCADE, null=True
700
697
  )
701
- creds: ManyToManyRelation["Cred"] = ManyToManyField(
698
+ credexs: ManyToManyRelation["CredEx"] = ManyToManyField(
702
699
  "models.CredEx", through="myad_cred", related_name="my_ads", on_update=CASCADE
703
700
  )
704
701
  race: BackwardFKRelation["Cred"]
@@ -711,9 +708,10 @@ class Race(Model):
711
708
  road: ForeignKeyRelation[MyAd] = ForeignKeyField("models.MyAd", "race", on_update=CASCADE)
712
709
  road_id: int
713
710
  ceil: int = UInt4Field(null=True) # /10^cur.scale
714
- target_place: int = UInt1Field(default=1)
711
+ target_place: int = SmallIntField(default=1)
715
712
  vm_filter: bool = BooleanField(default=True)
716
713
  started: bool = BooleanField(default=True)
714
+ filter_amount: int = UInt4Field() # /10^cur.scale
717
715
  updated_at: datetime | None = DatetimeSecField(auto_now=True)
718
716
 
719
717
  stats: BackwardFKRelation["RaceStat"]
@@ -766,10 +764,10 @@ class PmAgent(Model):
766
764
  table = "pm_agent"
767
765
  unique_together = (("pm_id", "user_id"),)
768
766
 
769
- def client(self, bot):
767
+ def client(self, browser, bot):
770
768
  module_name = f"xync_client.Pms.{self.pm.norm.capitalize()}"
771
769
  __import__(module_name)
772
- return sys.modules[module_name].Client(self, bot)
770
+ return sys.modules[module_name].Client(self, browser, bot)
773
771
 
774
772
 
775
773
  class PmCur(Model): # for fiat with no exs tie
@@ -836,13 +834,15 @@ class PmExBank(BaseModel): # banks for SBP
836
834
  class Cred(Model):
837
835
  pmcur: ForeignKeyRelation[PmCur] = ForeignKeyField("models.PmCur", on_update=CASCADE)
838
836
  pmcur_id: int
839
- detail: str = CharField(127)
837
+ detail: str = CharField(255)
840
838
  name: str | None = CharField(127, null=True)
841
839
  extra: str | None = CharField(255, null=True)
842
840
  person: ForeignKeyRelation[Person] = ForeignKeyField("models.Person", "creds")
843
841
  person_id: int
844
842
  from_chat: int # todo: ForeignKeyNullableRelation["Order"] = ForeignKeyField("models.Order", null=True)
845
843
 
844
+ ovr_pm: ForeignKeyRelation[Pm] = ForeignKeyField("models.Pm", on_update=CASCADE, null=True)
845
+ ovr_pm_id: int
846
846
  banks: ManyToManyRelation[PmExBank] = ManyToManyField("models.PmExBank", related_name="creds", on_update=CASCADE)
847
847
 
848
848
  fiat: BackwardOneToOneRelation["Fiat"]
@@ -860,7 +860,34 @@ class Cred(Model):
860
860
 
861
861
  class Meta:
862
862
  table_description = "Currency accounts"
863
- unique_together = (("person_id", "pmcur_id", "detail"),)
863
+ unique_together = (("person_id", "pmcur_id", "ovr_pm_id"),)
864
+
865
+
866
+ @pre_save(Cred)
867
+ async def cred_ovr_pm(_meta, cred: Cred, _db, _updated: dict) -> None:
868
+ # payeer
869
+ op = None
870
+ if "payeer" in cred.extra.lower() or "payeer" in cred.detail.lower():
871
+ op = 366
872
+ elif re.match(r"[PpРр]\d{7,10}\b", cred.detail):
873
+ op = 366
874
+ elif re.match(r"[PpРр]\d{7,10}\b", cred.extra):
875
+ op = 366
876
+ # volet
877
+ if (
878
+ "volet" in cred.detail.lower()
879
+ or "advcash" in cred.detail.lower()
880
+ or "volet" in cred.extra.lower()
881
+ or "advcash" in cred.extra.lower()
882
+ ):
883
+ op = 545
884
+ elif re.match(r"[REUTLD]\d{4} ?\d{4} ?\d{4}\b", cred.detail):
885
+ op = 545
886
+ elif re.match(r"[REUTLD]\d{4} ?\d{4} ?\d{4}\b", cred.extra):
887
+ op = 545
888
+
889
+ if op and op != (await cred.pmcur).pm_id:
890
+ cred.ovr_pm_id = op
864
891
 
865
892
 
866
893
  class CredEx(Model):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-schema
3
- Version: 0.0.53.dev1
3
+ Version: 0.0.54.dev2
4
4
  Summary: XyncNet project database model schema
5
5
  Author-email: Mike Artemiev <mixartemev@gmail.com>
6
6
  License: EULA