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/__init__.py +2 -5
- nsarchive/cls/base.py +131 -81
- nsarchive/cls/entities.py +175 -112
- nsarchive/instances/_economy.py +51 -8
- nsarchive/instances/_entities.py +60 -166
- nsarchive/instances/_republic.py +33 -7
- {nsarchive-3.0.0a1.dist-info → nsarchive-3.0.0a3.dist-info}/METADATA +1 -2
- nsarchive-3.0.0a3.dist-info/RECORD +15 -0
- nsarchive/cls/exceptions.py +0 -25
- nsarchive-3.0.0a1.dist-info/RECORD +0 -16
- {nsarchive-3.0.0a1.dist-info → nsarchive-3.0.0a3.dist-info}/LICENSE +0 -0
- {nsarchive-3.0.0a1.dist-info → nsarchive-3.0.0a3.dist-info}/WHEEL +0 -0
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
|
-
#
|
15
|
-
self.
|
16
|
-
self.
|
17
|
-
self.
|
18
|
-
self.
|
19
|
-
self.
|
20
|
-
self.
|
21
|
-
self.
|
22
|
-
self.
|
23
|
-
self.
|
24
|
-
self.
|
25
|
-
self.
|
26
|
-
self.
|
27
|
-
|
28
|
-
|
29
|
-
|
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.
|
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
|
106
|
+
raise ValueError(f"Name length mustn't exceed 32 characters.")
|
83
107
|
|
84
|
-
self.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 =
|
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)
|
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
|
-
|
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.
|
118
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
137
|
-
|
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
|
-
|
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
|
225
|
+
class GroupMember:
|
157
226
|
"""
|
158
227
|
Membre au sein d'une entité collective
|
159
228
|
|
160
229
|
## Attributs
|
161
|
-
-
|
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
|
-
|
168
|
-
|
169
|
-
|
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
|
244
|
+
if team_perms >= 1: # Responsable
|
175
245
|
p.manage_members = True
|
176
246
|
|
177
|
-
if
|
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
|
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
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
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
|
-
|
294
|
+
def _load(self, _data: dict):
|
295
|
+
res = requests.get(f"{self._url}/avatar")
|
247
296
|
|
248
|
-
|
249
|
-
|
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
|
-
|
322
|
+
res = requests.post(f"{self._url}/remove_certification?name={certification}", headers = default_headers)
|
256
323
|
|
257
|
-
|
258
|
-
|
259
|
-
|
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.
|
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
|
281
|
-
|
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
|
-
|
362
|
+
self.avatar = data
|
nsarchive/instances/_economy.py
CHANGED
@@ -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
|
-
"""
|
8
|
+
"""Indisponible dans cette version."""
|
13
9
|
|
14
|
-
def __init__(self,
|
15
|
-
super().__init__(
|
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
|
-
"""
|
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 ]
|