nsarchive 3.0.0a1__py3-none-any.whl → 3.0.0a3__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.
nsarchive/cls/entities.py CHANGED
@@ -1,36 +1,58 @@
1
+ import requests
1
2
  import time
3
+ import typing
4
+ import urllib
5
+ import warnings
2
6
 
3
- from .exceptions import *
4
7
  from .base import NSID
5
8
 
6
9
  from .. import utils
7
10
 
11
+ default_headers = {}
12
+
13
+ class Permission:
14
+ def __init__(self, initial: str = "----"):
15
+ self.append: bool
16
+ self.manage: bool
17
+ self.edit: bool
18
+ self.read: bool
19
+
20
+ self.load(initial)
21
+
22
+ def load(self, val: str) -> None:
23
+ if 'a' in val: self.append = True
24
+ if 'm' in val: self.manage = True
25
+ if 'e' in val: self.edit = True
26
+ if 'r' in val: self.read = True
27
+
8
28
  class PositionPermissions:
9
29
  """
10
30
  Permissions d'une position à l'échelle du serveur. Certaines sont attribuées selon l'appartenance à divers groupes ayant une position précise
11
31
  """
12
32
 
13
33
  def __init__(self) -> None:
14
- # Membres
15
- self.approve_laws = False # Approuver ou désapprouver les lois proposées (vaut aussi pour la Constitution)
16
- self.buy_items = False # Acheter des items depuis le marketplace
17
- self.create_organizations = False # Créer une organisation
18
- self.edit_constitution = False # Proposer une modification de la Constitution
19
- self.edit_laws = False # Proposer une modification des différents textes de loi
20
- self.manage_entities = False # Gérer les membres et les organisations
21
- self.manage_national_channel = False # Prendre la parole sur la chaîne nationale et avoir une priorité de passage sur les autres chaînes
22
- self.manage_reports = False # Accepter ou refuser une plainte
23
- self.manage_state_budgets = False # Gérer les différents budgets de l'État
24
- self.moderate_members = False # Envoyer des membres en garde à vue, en détention ou toute autre sanction non présente sur le client Discord
25
- self.propose_new_laws = self.edit_constitution # Proposer un nouveau texte de loi pris en charge par la Constitution
26
- self.publish_official_messages = False # Publier un message sous l'identité du bot Serveur
27
- self.sell_items = False # Vendre des objets ou services sur le marketplace
28
- self.vote_president = False # Participer aux élections présidentielles
29
- self.vote_representatives = False # Participer aux élections législatives
34
+ self.bank_accounts = Permission("a---") # APPEND = ouvrir un ou plusieurs comptes, MANAGE = voir les infos globales concernant les comptes en banque, EDIT = gérer des comptes en banque, READ = voir les infos d'un compte en banque individuel
35
+ self.bots = Permission() # APPEND = publier un message sous l'identité d'un bot, MANAGE = proposer d'héberger un bot, EDIT = changer les paramètres d'un bot, READ = /
36
+ self.constitution = Permission() # APPEND = laws.append, MANAGE = laws.manage, EDIT = modifier la constitution, READ = /
37
+ self.database = Permission() # APPEND = créer des sous-bases de données, MANAGE = gérer la abse de données, EDIT = modifier les éléments, READ = avoir accès à toutes les données sans exception
38
+ self.items = Permission("---r") # APPEND = vendre, MANAGE = gérer des items dont on n'est pas propriétaire (hors marketplace), EDIT = gérer des items dont on n'est pas propriétaire (dans le marketplace), READ = accéder au marketplace
39
+ self.laws = Permission() # APPEND = proposer un texte de loi, MANAGE = accepter ou refuser une proposition, EDIT = modifier un texte, READ = /
40
+ self.members = Permission("---r") # APPEND = créer des entités, MANAGE = modérer des entités (hors Discord), EDIT = modifier des entités, READ = voir le profil des entités
41
+ self.money = Permission("---r") # APPEND = créer des entités, MANAGE = modérer des entités (hors Discord), EDIT = modifier des entités, READ = voir le profil des entités
42
+ self.national_channel = Permission() # APPEND = prendre la parole sur la chaîne nationale, MANAGE = voir qui peut prendre la parole, EDIT = modifier le planning de la chaîne nationale, READ = /
43
+ self.organizations = Permission("---r") # APPEND = créer une nouvelle organisation, MANAGE = exécuter des actions administratives sur les organisations, EDIT = modifier des organisations, READ = voir le profil de n'importe quelle organisation
44
+ self.reports = Permission() # APPEND = déposer plainte, MANAGE = accépter ou refuser une plainte, EDIT = /, READ = accéder à des infos supplémentaires pour une plainte
45
+ self.state_budgets = Permission() # APPEND = débloquer un nouveau budget, MANAGE = gérer les budjets, EDIT = gérer les sommes pour chaque budjet, READ = accéder aux infos concernant les budgets
46
+ self.votes = Permission() # APPEND = déclencher un vote, MANAGE = fermer un vote, EDIT = /, READ = lire les propriétés d'un vote avant sa fermeture
47
+
48
+ def merge(self, permissions: dict[str, str] | typing.Self):
49
+ if isinstance(permissions, PositionPermissions):
50
+ permissions = permissions.__dict__
51
+
52
+ for key, val in permissions.items():
53
+ perm: Permission = self.__getattribute__(key)
54
+ perm.load(val)
30
55
 
31
- def edit(self, **permissions: bool) -> None:
32
- for perm in permissions.items():
33
- self.__setattr__(*perm)
34
56
 
35
57
  class Position:
36
58
  """
@@ -71,7 +93,9 @@ class Entity:
71
93
  """
72
94
 
73
95
  def __init__(self, id: NSID) -> None:
74
- self.id: NSID = NSID(id) # ID hexadécimal de l'entité (ou nom dans le cas de l'entreprise)
96
+ self._url = "" # URL de l'entité pour une requête GET
97
+
98
+ self.id: NSID = NSID(id) # ID hexadécimal de l'entité
75
99
  self.name: str = "Entité Inconnue"
76
100
  self.registerDate: int = 0
77
101
  self.position: Position = Position()
@@ -79,19 +103,55 @@ class Entity:
79
103
 
80
104
  def set_name(self, new_name: str) -> None:
81
105
  if len(new_name) > 32:
82
- raise NameTooLongError(f"Name length mustn't exceed 32 characters.")
106
+ raise ValueError(f"Name length mustn't exceed 32 characters.")
83
107
 
84
- self.name = new_name
108
+ res = requests.post(f"{self._url}/rename?name={new_name}", headers = default_headers)
109
+
110
+ if res.status_code == 200:
111
+ self.name = new_name
112
+ else:
113
+ print(res.status_code)
114
+ res.raise_for_status()
85
115
 
86
116
  def set_position(self, position: Position) -> None:
87
- self.position = position
117
+ res = requests.post(f"{self._url}/change_position?position={position.id}", headers = default_headers)
118
+
119
+ if res.status_code == 200:
120
+ self.position = position
121
+ else:
122
+ res.raise_for_status()
88
123
 
89
124
  def add_link(self, key: str, value: str | int) -> None:
90
- if isinstance(value, str) or isinstance(value, int):
125
+ if isinstance(value, str):
126
+ _class = "string"
127
+ elif isinstance(value, int):
128
+ _class = "integer"
129
+ else:
130
+ raise TypeError("Only strings and integers can be recorded as an additional link")
131
+
132
+ params = {
133
+ "link": key,
134
+ "value": value,
135
+ "type": _class
136
+ }
137
+
138
+ query = "&".join(f"{k}={ urllib.parse.quote(v) }" for k, v in params.items())
139
+
140
+ res = requests.post(f"{self._url}/add_link?{query}", headers = default_headers)
141
+
142
+ if res.status_code == 200:
91
143
  self.additional[key] = value
144
+ else:
145
+ print(res.text)
146
+ res.raise_for_status()
92
147
 
93
148
  def unlink(self, key: str) -> None:
94
- del self.additional[key]
149
+ res = requests.post(f"{self._url}/remove_link?link={urllib.parse.quote(key)}", headers = default_headers)
150
+
151
+ if res.status_code == 200:
152
+ del self.additional[key]
153
+ else:
154
+ res.raise_for_status()
95
155
 
96
156
  class User(Entity):
97
157
  """
@@ -102,9 +162,7 @@ class User(Entity):
102
162
  - xp: `int`\n
103
163
  Points d'expérience de l'entité
104
164
  - boosts: `dict[str, int]`\n
105
- Ensemble des boosts dont bénéficie l'entité
106
- - permissions: `.PositionPermissions`\n
107
- Fusion des permissions offertes par la position et les groupes
165
+ Ensemble des boosts dont bénéficie l'entité
108
166
  - votes: `list[NSID]`\n
109
167
  Liste des votes auxquels a participé l'entité
110
168
  """
@@ -114,11 +172,13 @@ class User(Entity):
114
172
 
115
173
  self.xp: int = 0
116
174
  self.boosts: dict[str, int] = {}
117
- self.permissions: PositionPermissions = PositionPermissions() # Elles seront définies en récupérant les permissions de sa position
118
- self.votes: list[str] = []
175
+ self.votes: list[NSID] = []
176
+
177
+ def _load(self, _data: dict):
178
+ self.xp = _data['xp']
179
+ self.boosts = _data['boosts']
119
180
 
120
- def add_vote(self, id: NSID):
121
- self.votes.append(NSID(id))
181
+ self.votes = [ NSID(vote) for vote in _data['votes'] ]
122
182
 
123
183
  def get_level(self) -> None:
124
184
  i = 0
@@ -128,15 +188,24 @@ class User(Entity):
128
188
  return i
129
189
 
130
190
  def add_xp(self, amount: int) -> None:
131
- boost = 0 if 0 in self.boosts.values() else max(list(self.boosts.values()) + [ 1 ])
191
+ boost = 0 if 0 in self.boosts.values() or amount <= 0 else max(list(self.boosts.values()) + [ 1 ])
192
+ res = requests.post(f"{self._url}/add_xp?amount={amount * boost}", headers = default_headers)
132
193
 
133
- self.xp += amount * boost
194
+ if res.status_code == 200:
195
+ self.xp += amount * boost
196
+ else:
197
+ res.raise_for_status()
134
198
 
135
199
  def edit_boost(self, name: str, multiplier: int = -1) -> None:
136
- if multiplier >= 0:
137
- self.boosts[name] = multiplier
200
+ res = requests.post(f"{self._url}/edit_boost?boost={name}&multiplier={multiplier}", headers = default_headers)
201
+
202
+ if res.status_code == 200:
203
+ if multiplier >= 0:
204
+ self.boosts[name] = multiplier
205
+ else:
206
+ del self.boosts[name]
138
207
  else:
139
- del self.boosts[name]
208
+ res.raise_for_status()
140
209
 
141
210
  class MemberPermissions:
142
211
  """
@@ -145,76 +214,54 @@ class MemberPermissions:
145
214
 
146
215
  def __init__(self) -> None:
147
216
  self.manage_organization = False # Renommer l'organisation, changer le logo
148
- self.manage_roles = False # Changer les rôles des membres
149
217
  self.manage_shares = False # Revaloriser les actions
218
+ self.manage_roles = False # Changer les rôles des membres
150
219
  self.manage_members = False # Virer quelqu'un d'une entreprise, l'y inviter
151
220
 
152
221
  def edit(self, **permissions: bool) -> None:
153
222
  for perm in permissions.values():
154
223
  self.__setattr__(*perm)
155
224
 
156
- class GroupMember(User):
225
+ class GroupMember:
157
226
  """
158
227
  Membre au sein d'une entité collective
159
228
 
160
229
  ## Attributs
161
- - Tous les attributs de la classe `.User`
162
- - permission_level: `int`\n
230
+ - permission_level: `dict[str, int]`\n
163
231
  Niveau d'accréditation du membre (0 = salarié, 4 = administrateur)
164
232
  """
165
233
 
166
234
  def __init__(self, id: NSID) -> None:
167
- super().__init__(id)
168
-
169
- self.permission_level: int = 0
235
+ self.id = id
236
+ self.permission_level: dict = { # Échelle de permissions selon le groupe de travail
237
+ "general": 0
238
+ }
170
239
 
171
- def group_permissions(self) -> MemberPermissions:
240
+ def group_permissions(self, team: str = "general") -> MemberPermissions:
172
241
  p = MemberPermissions()
242
+ team_perms = self.permission_level[team]
173
243
 
174
- if self.permission_level >= 1:
244
+ if team_perms >= 1: # Responsable
175
245
  p.manage_members = True
176
246
 
177
- if self.permission_level >= 2:
178
- p.manage_shares = True
179
-
180
- if self.permission_level >= 3:
247
+ if team_perms >= 2: # Superviseur
181
248
  p.manage_roles = True
182
249
 
183
- if self.permission_level >= 4:
250
+ if team_perms >= 3: # Chef d'équipe
251
+ pass
252
+
253
+ if team_perms >= 4: # Directeur
254
+ p.manage_shares = True
184
255
  p.manage_organization = True
185
256
 
186
257
  return p
187
258
 
188
- class Share:
189
- """
190
- Action d'une entreprise
191
-
192
- ## Attributs
193
- - owner: `NSID`\n
194
- Identifiant du titulaire de l'action
195
- - price: `int`\n
196
- Prix de l'action
197
- """
198
-
199
- def __getstate__(self) -> dict:
200
- return {
201
- "owner": self.owner,
202
- "price": self.price
203
- }
204
-
205
- def __setstate__(self, state: dict):
206
- self.owner: NSID = state['owner']
207
- self.price: int = state['price']
208
-
209
- def __init__(self, owner: NSID = NSID(0x0), price: int = 10):
210
- self.owner: NSID = owner
211
- self.price: int = price
212
-
213
- def assign_owner(self, owner: NSID):
214
- self.owner = owner
215
-
216
- def set_price(self, price: int):
217
- self.price = price
259
+ class GroupInvite:
260
+ def __init__(self, id: NSID):
261
+ self.id: NSID = id
262
+ self.team: str = "general"
263
+ self.level: str = 0
264
+ self._expires: int = round(time.time()) + 604800
218
265
 
219
266
  class Organization(Entity):
220
267
  """
@@ -242,32 +289,63 @@ class Organization(Entity):
242
289
 
243
290
  self.certifications: dict = {}
244
291
  self.members: list[GroupMember] = []
292
+ self.invites: dict[GroupInvite] = []
245
293
 
246
- self.parts: list[Share] = 50 * [ Share(self.owner.id, 0) ]
294
+ def _load(self, _data: dict):
295
+ res = requests.get(f"{self._url}/avatar")
247
296
 
248
- def add_certification(self, certification: str) -> None:
249
- self.certifications[certification] = round(time.time())
297
+ if res.status_code == 200:
298
+ self.avatar = res.content
299
+ else:
300
+ warnings.warn(f"Failed to get avatar for {self.id}")
301
+
302
+ for _member in _data['members']:
303
+ member = GroupMember(_member['id'])
304
+ member.permission_level = _member['level']
305
+
306
+ self.members.append(member)
307
+
308
+ self.certifications = _data['certifications']
309
+
310
+ def add_certification(self, certification: str, __expires: int = 2419200) -> None:
311
+ res = requests.post(f"{self._url}/add_certification?name={certification}&duration={__expires}", headers = default_headers)
312
+
313
+ if res.status_code == 200:
314
+ self.certifications[certification] = int(round(time.time()) + __expires)
315
+ else:
316
+ res.raise_for_status()
250
317
 
251
318
  def has_certification(self, certification: str) -> bool:
252
319
  return certification in self.certifications.keys()
253
320
 
254
321
  def remove_certification(self, certification: str) -> None:
255
- del self.certifications[certification]
322
+ res = requests.post(f"{self._url}/remove_certification?name={certification}", headers = default_headers)
256
323
 
257
- def add_member(self, member: GroupMember) -> None:
258
- if not isinstance(member, GroupMember):
259
- raise TypeError("Le membre doit être de type GroupMember")
324
+ if res.status_code == 200:
325
+ del self.certifications[certification]
326
+ else:
327
+ res.raise_for_status()
328
+
329
+ def invite_member(self, member: NSID, level: int = 0, team: str = "general") -> None:
330
+ if not isinstance(member, NSID):
331
+ raise TypeError("L'entrée membre doit être de type NSID")
260
332
 
261
- self.members.append(member)
333
+ res = requests.post(f"{self._url}/invite_member?id={member}&level={level}&team={team}", headers = default_headers)
334
+
335
+ if res.status_code == 200:
336
+ invite = GroupInvite(member)
337
+ invite.team = team
338
+ invite.level = level
339
+
340
+ self.invites.append(invite)
341
+ else:
342
+ res.raise_for_status()
262
343
 
263
344
  def remove_member(self, member: GroupMember) -> None:
264
345
  for _member in self.members:
265
346
  if _member.id == member.id:
266
347
  self.members.remove(_member)
267
348
 
268
- def append(self, member: GroupMember) -> None:
269
- self.add_member(member)
270
-
271
349
  def remove(self, member: GroupMember) -> None:
272
350
  self.remove_member(member)
273
351
 
@@ -277,23 +355,8 @@ class Organization(Entity):
277
355
  def get_members_by_attr(self, attribute: str = "id") -> list[str]:
278
356
  return [ member.__getattribute__(attribute) for member in self.members ]
279
357
 
280
- def get_shares(self, include_worth: bool = False) -> dict[str, int] | dict[str, dict[str, int]]:
281
- shares = {}
282
-
283
- for share in self.parts:
284
- if include_worth:
285
- if share.owner in shares.keys():
286
- shares[share.owner]['count'] += 1
287
- shares[share.owner]['worth'] += share.price
288
- else:
289
- shares[share.owner] = {
290
- 'count': 1,
291
- 'worth': share.price
292
- }
293
- else:
294
- if share.owner in shares.keys():
295
- shares[share.owner] += 1
296
- else:
297
- shares[share.owner] = 1
358
+ def save_avatar(self, data: bytes = None):
359
+ if not data:
360
+ return
298
361
 
299
- return shares
362
+ self.avatar = data
@@ -1,18 +1,14 @@
1
1
  import time
2
2
 
3
- from supabase import create_client
4
-
5
3
  from ..cls.base import *
6
4
  from ..cls.archives import *
7
5
  from ..cls.economy import *
8
6
 
9
- from ..cls.exceptions import *
10
-
11
7
  class EconomyInstance(Instance):
12
- """Gère les interactions avec les comptes bancaires, les transactions, et le marché."""
8
+ """Indisponible dans cette version."""
13
9
 
14
- def __init__(self, id: str, token: str) -> None:
15
- super().__init__(create_client(f"https://{id}.supabase.co", token))
10
+ def __init__(self, url: str, token: str) -> None:
11
+ super().__init__(url, token)
16
12
 
17
13
  """
18
14
  ---- COMPTES EN BANQUE ----
@@ -20,6 +16,7 @@ class EconomyInstance(Instance):
20
16
 
21
17
  def get_account(self, id: NSID) -> BankAccount:
22
18
  """
19
+ *INDISPONIBLE DANS CETTE VERSION.*\n
23
20
  Récupère les informations d'un compte bancaire.
24
21
 
25
22
  ## Paramètres
@@ -30,6 +27,8 @@ class EconomyInstance(Instance):
30
27
  - `.BankAccount`
31
28
  """
32
29
 
30
+ return BankAccount(NSID(id)) # Provisoire
31
+
33
32
  id = NSID(id)
34
33
  _data = self._get_by_ID('accounts', id)
35
34
 
@@ -47,6 +46,7 @@ class EconomyInstance(Instance):
47
46
 
48
47
  def save_account(self, account: BankAccount):
49
48
  """
49
+ *INDISPONIBLE DANS CETTE VERSION.*\n
50
50
  Sauvegarde un compte bancaire dans la base de données.
51
51
 
52
52
  ## Paramètres
@@ -54,6 +54,8 @@ class EconomyInstance(Instance):
54
54
  Compte à sauvegarder
55
55
  """
56
56
 
57
+ return # Provisoire
58
+
57
59
  _data = {
58
60
  'id': NSID(account.id),
59
61
  'amount': account.amount,
@@ -67,6 +69,7 @@ class EconomyInstance(Instance):
67
69
 
68
70
  def freeze_account(self, account: BankAccount):
69
71
  """
72
+ *INDISPONIBLE DANS CETTE VERSION.*\n
70
73
  Gèle un compte bancaire pour empêcher toute transaction.
71
74
 
72
75
  ## Paramètres
@@ -74,6 +77,8 @@ class EconomyInstance(Instance):
74
77
  Compte à geler
75
78
  """
76
79
 
80
+ return # Provisoire
81
+
77
82
  account.id = NSID(account.id)
78
83
  account.frozen = True
79
84
 
@@ -85,6 +90,7 @@ class EconomyInstance(Instance):
85
90
 
86
91
  def save_item(self, item: Item):
87
92
  """
93
+ *INDISPONIBLE DANS CETTE VERSION.*\n
88
94
  Sauvegarde des infos à propos d'un item.
89
95
 
90
96
  ## Paramètres
@@ -92,11 +98,14 @@ class EconomyInstance(Instance):
92
98
  Article à sauvegarder
93
99
  """
94
100
 
101
+ return # Provisoire
102
+
95
103
  _item = item.__dict__
96
104
  self._put_in_db('items', _item)
97
105
 
98
106
  def get_item(self, id: NSID) -> Item | None:
99
107
  """
108
+ *INDISPONIBLE DANS CETTE VERSION.*\n
100
109
  Récupère des informations à propos d'un item.
101
110
 
102
111
  ## Paramètres
@@ -108,6 +117,8 @@ class EconomyInstance(Instance):
108
117
  - `None`
109
118
  """
110
119
 
120
+ return Item(NSID(id)) # Provisoire
121
+
111
122
  _item = self._get_by_ID('items', id)
112
123
 
113
124
  if _item is None:
@@ -121,6 +132,7 @@ class EconomyInstance(Instance):
121
132
 
122
133
  def delete_item(self, item: Item):
123
134
  """
135
+ *INDISPONIBLE DANS CETTE VERSION.*\n
124
136
  Annule le référencement d'un item.
125
137
 
126
138
  ## Paramètres
@@ -128,10 +140,13 @@ class EconomyInstance(Instance):
128
140
  Item à supprimer
129
141
  """
130
142
 
143
+ return # Provisoire
144
+
131
145
  self._delete_by_ID('items', item.id)
132
146
 
133
147
  def get_sale(self, id: NSID) -> Sale | None:
134
148
  """
149
+ *INDISPONIBLE DANS CETTE VERSION.*\n
135
150
  Récupère une vente disponible sur le marketplace.
136
151
 
137
152
  ## Paramètres
@@ -142,6 +157,8 @@ class EconomyInstance(Instance):
142
157
  - `.Sale | None`: Le résultat de la vente
143
158
  """
144
159
 
160
+ return Sale(NSID(id), Item(NSID(id))) # Provisoire
161
+
145
162
  id = NSID(id)
146
163
 
147
164
  _data = self._get_by_ID('market', id)
@@ -158,6 +175,7 @@ class EconomyInstance(Instance):
158
175
 
159
176
  def sell_item(self, item: Item, quantity: int, price: int, seller: NSID):
160
177
  """
178
+ *INDISPONIBLE DANS CETTE VERSION.*\n
161
179
  Vend un item sur le marché.
162
180
 
163
181
  ## Paramètres
@@ -171,6 +189,8 @@ class EconomyInstance(Instance):
171
189
  ID de l'auteur de la vente
172
190
  """
173
191
 
192
+ return # Provisoire
193
+
174
194
  sale = Sale(NSID(round(time.time()) * 16 ** 3), item)
175
195
  sale.quantity = quantity
176
196
  sale.price = price
@@ -181,7 +201,12 @@ class EconomyInstance(Instance):
181
201
  self._put_in_db('market', _data)
182
202
 
183
203
  def delete_sale(self, sale: Sale) -> None:
184
- """Annule une vente sur le marketplace."""
204
+ """
205
+ *INDISPONIBLE DANS CETTE VERSION.*\n
206
+ Annule une vente sur le marketplace.
207
+ """
208
+
209
+ return # Provisoire
185
210
 
186
211
  sale.id = NSID(sale.id)
187
212
  self._delete_by_ID('market', NSID(sale.id))
@@ -192,6 +217,7 @@ class EconomyInstance(Instance):
192
217
 
193
218
  def get_inventory(self, id: NSID) -> Inventory | None:
194
219
  """
220
+ *INDISPONIBLE DANS CETTE VERSION.*\n
195
221
  Récupérer un inventaire dans la base des inventaires.
196
222
 
197
223
  ## Paramètres
@@ -202,6 +228,8 @@ class EconomyInstance(Instance):
202
228
  - `.Inventory | None`: L'inventaire s'il a été trouvé
203
229
  """
204
230
 
231
+ return Inventory(NSID(id)) # Provisoire
232
+
205
233
  _data = self._get_by_ID('inventories', id)
206
234
 
207
235
  if _data is None:
@@ -218,6 +246,7 @@ class EconomyInstance(Instance):
218
246
 
219
247
  def save_inventory(self, inventory: Inventory):
220
248
  """
249
+ *INDISPONIBLE DANS CETTE VERSION.*\n
221
250
  Sauvegarder un inventaire
222
251
 
223
252
  ## Paramètres
@@ -225,12 +254,15 @@ class EconomyInstance(Instance):
225
254
  Inventaire à sauvegarder
226
255
  """
227
256
 
257
+ return # Provisoire
258
+
228
259
  _data = inventory.__dict__
229
260
 
230
261
  self._put_in_db('inventories', _data)
231
262
 
232
263
  def delete_inventory(self, inventory: Inventory):
233
264
  """
265
+ *INDISPONIBLE DANS CETTE VERSION.*\n
234
266
  Supprime un inventaire
235
267
 
236
268
  ## Paramètres
@@ -238,6 +270,8 @@ class EconomyInstance(Instance):
238
270
  Inventaire à supprimer
239
271
  """
240
272
 
273
+ return # Provisoire
274
+
241
275
  self._delete_by_ID('inventories', inventory.owner_id)
242
276
 
243
277
  """
@@ -246,6 +280,7 @@ class EconomyInstance(Instance):
246
280
 
247
281
  def _add_archive(self, archive: Archive):
248
282
  """
283
+ *INDISPONIBLE DANS CETTE VERSION.*\n
249
284
  Ajoute une archive d'une transaction ou d'une vente dans la base de données.
250
285
 
251
286
  ## Paramètres
@@ -253,6 +288,8 @@ class EconomyInstance(Instance):
253
288
  Archive à ajouter
254
289
  """
255
290
 
291
+ return # Provisoire
292
+
256
293
  archive.id = NSID(archive.id)
257
294
  archive.author = NSID(archive.author)
258
295
  archive.target = NSID(archive.target)
@@ -268,6 +305,7 @@ class EconomyInstance(Instance):
268
305
 
269
306
  def _get_archive(self, id: NSID) -> Archive | Transaction:
270
307
  """
308
+ *INDISPONIBLE DANS CETTE VERSION.*\n
271
309
  Récupère une archive spécifique.
272
310
 
273
311
  ## Paramètres
@@ -278,6 +316,8 @@ class EconomyInstance(Instance):
278
316
  - `.Archive | .Transaction`
279
317
  """
280
318
 
319
+ return Archive() # Provisoire
320
+
281
321
  id = NSID(id)
282
322
  _data = self._get_by_ID('archives', id)
283
323
 
@@ -298,6 +338,7 @@ class EconomyInstance(Instance):
298
338
 
299
339
  def _fetch_archives(self, **query) -> list[ Archive | Transaction ]:
300
340
  """
341
+ *INDISPONIBLE DANS CETTE VERSION.*\n
301
342
  Récupère une liste d'archives correspondant à la requête.
302
343
 
303
344
  ## Paramètres
@@ -308,6 +349,8 @@ class EconomyInstance(Instance):
308
349
  - `list[.Archive | .Transaction]`
309
350
  """
310
351
 
352
+ return [] # Provisoire
353
+
311
354
  _res = self.fetch('archives', **query)
312
355
 
313
356
  return [ self._get_archive(archive['id']) for archive in _res ]