nsarchive 3.0.0a8__py3-none-any.whl → 3.0.0b2__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 +6 -2
- nsarchive/errors/__init__.py +1 -0
- nsarchive/errors/_globals.py +29 -0
- nsarchive/interfaces/_economy.py +0 -252
- nsarchive/interfaces/_entities.py +101 -15
- nsarchive/interfaces/_justice.py +232 -8
- nsarchive/interfaces/_state.py +221 -24
- nsarchive/mandate.py +21 -2
- nsarchive/models/base.py +113 -71
- nsarchive/models/economy.py +80 -152
- nsarchive/models/entities.py +309 -73
- nsarchive/models/justice.py +25 -4
- nsarchive/models/republic.py +72 -29
- nsarchive/models/state.py +64 -9
- nsarchive-3.0.0b2.dist-info/METADATA +90 -0
- nsarchive-3.0.0b2.dist-info/RECORD +21 -0
- nsarchive-3.0.0a8.dist-info/METADATA +0 -21
- nsarchive-3.0.0a8.dist-info/RECORD +0 -19
- {nsarchive-3.0.0a8.dist-info → nsarchive-3.0.0b2.dist-info}/LICENSE +0 -0
- {nsarchive-3.0.0a8.dist-info → nsarchive-3.0.0b2.dist-info}/WHEEL +0 -0
nsarchive/models/entities.py
CHANGED
@@ -1,19 +1,17 @@
|
|
1
1
|
import requests
|
2
2
|
import time
|
3
3
|
import typing
|
4
|
-
import urllib
|
5
|
-
import warnings
|
6
4
|
|
7
5
|
from .base import NSID
|
8
6
|
|
9
|
-
from .. import
|
7
|
+
from .. import errors
|
10
8
|
|
11
9
|
class Permission:
|
12
10
|
def __init__(self, initial: str = "----"):
|
13
|
-
self.append: bool
|
14
|
-
self.manage: bool
|
15
|
-
self.edit: bool
|
16
|
-
self.read: bool
|
11
|
+
self.append: bool = False
|
12
|
+
self.manage: bool = False
|
13
|
+
self.edit: bool = False
|
14
|
+
self.read: bool = False
|
17
15
|
|
18
16
|
self.load(initial)
|
19
17
|
|
@@ -90,14 +88,33 @@ class Position:
|
|
90
88
|
return self.id
|
91
89
|
|
92
90
|
def update_permisions(self, **permissions: str):
|
93
|
-
query = "&".join(f"{k}={
|
91
|
+
query = "&".join(f"{k}={v}" for k, v in permissions.items())
|
94
92
|
|
95
93
|
res = requests.post(f"{self._url}/update_permissions?{query}", headers = self._headers)
|
96
94
|
|
97
95
|
if res.status_code == 200:
|
98
96
|
self.permissions.merge(permissions)
|
99
|
-
|
100
|
-
|
97
|
+
elif 500 <= res.status_code < 600:
|
98
|
+
raise errors.globals.ServerDownError()
|
99
|
+
|
100
|
+
_data = res.json()
|
101
|
+
|
102
|
+
if res.status_code == 400:
|
103
|
+
if _data['message'] == "MissingParam":
|
104
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
105
|
+
elif _data['message'] == "InvalidParam":
|
106
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
107
|
+
elif _data['message'] == "InvalidToken":
|
108
|
+
raise errors.globals.AuthError("Token is not valid.")
|
109
|
+
|
110
|
+
elif res.status_code == 401:
|
111
|
+
raise errors.globals.AuthError(_data['message'])
|
112
|
+
|
113
|
+
elif res.status_code == 403:
|
114
|
+
raise errors.globals.PermissionError(_data['message'])
|
115
|
+
|
116
|
+
elif res.status_code == 404:
|
117
|
+
raise errors.globals.NotFoundError(_data['message'])
|
101
118
|
|
102
119
|
def _load(self, _data: dict, url: str, headers: dict) -> None:
|
103
120
|
self._url = url + '/model/positions/' + _data['id']
|
@@ -163,11 +180,33 @@ class Entity:
|
|
163
180
|
|
164
181
|
if res.status_code == 200:
|
165
182
|
self.name = new_name
|
166
|
-
|
167
|
-
|
183
|
+
elif 500 <= res.status_code < 600:
|
184
|
+
raise errors.globals.ServerDownError()
|
185
|
+
|
186
|
+
_data = res.json()
|
187
|
+
|
188
|
+
if res.status_code == 400:
|
189
|
+
if _data['message'] == "MissingParam":
|
190
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
191
|
+
elif _data['message'] == "InvalidParam":
|
192
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
193
|
+
elif _data['message'] == "InvalidToken":
|
194
|
+
raise errors.globals.AuthError("Token is not valid.")
|
195
|
+
|
196
|
+
elif res.status_code == 401:
|
197
|
+
raise errors.globals.AuthError(_data['message'])
|
168
198
|
|
169
|
-
|
170
|
-
|
199
|
+
elif res.status_code == 403:
|
200
|
+
raise errors.globals.PermissionError(_data['message'])
|
201
|
+
|
202
|
+
elif res.status_code == 404:
|
203
|
+
raise errors.globals.NotFoundError(_data['message'])
|
204
|
+
|
205
|
+
def set_position(self, position: str | Position) -> None:
|
206
|
+
if isinstance(position, Position):
|
207
|
+
position: str = position.id
|
208
|
+
|
209
|
+
res = requests.post(f"{self._url}/change_position?position={position}", headers = self._headers)
|
171
210
|
|
172
211
|
if res.status_code == 200:
|
173
212
|
self.position = position
|
@@ -188,23 +227,60 @@ class Entity:
|
|
188
227
|
"type": _class
|
189
228
|
}
|
190
229
|
|
191
|
-
query = "&".join(f"{k}={
|
230
|
+
query = "&".join(f"{k}={v}" for k, v in params.items())
|
192
231
|
|
193
232
|
res = requests.post(f"{self._url}/add_link?{query}", headers = self._headers)
|
194
233
|
|
195
234
|
if res.status_code == 200:
|
196
235
|
self.additional[key] = value
|
197
|
-
|
198
|
-
|
199
|
-
|
236
|
+
elif 500 <= res.status_code < 600:
|
237
|
+
raise errors.globals.ServerDownError()
|
238
|
+
|
239
|
+
_data = res.json()
|
240
|
+
|
241
|
+
if res.status_code == 400:
|
242
|
+
if _data['message'] == "MissingParam":
|
243
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
244
|
+
elif _data['message'] == "InvalidParam":
|
245
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
246
|
+
elif _data['message'] == "InvalidToken":
|
247
|
+
raise errors.globals.AuthError("Token is not valid.")
|
248
|
+
|
249
|
+
elif res.status_code == 401:
|
250
|
+
raise errors.globals.AuthError(_data['message'])
|
251
|
+
|
252
|
+
elif res.status_code == 403:
|
253
|
+
raise errors.globals.PermissionError(_data['message'])
|
254
|
+
|
255
|
+
elif res.status_code == 404:
|
256
|
+
raise errors.globals.NotFoundError(_data['message'])
|
200
257
|
|
201
258
|
def unlink(self, key: str) -> None:
|
202
|
-
res = requests.post(f"{self._url}/remove_link?link={
|
259
|
+
res = requests.post(f"{self._url}/remove_link?link={key}", headers = self._headers)
|
203
260
|
|
204
261
|
if res.status_code == 200:
|
205
262
|
del self.additional[key]
|
206
|
-
|
207
|
-
|
263
|
+
elif 500 <= res.status_code < 600:
|
264
|
+
raise errors.globals.ServerDownError()
|
265
|
+
|
266
|
+
_data = res.json()
|
267
|
+
|
268
|
+
if res.status_code == 400:
|
269
|
+
if _data['message'] == "MissingParam":
|
270
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
271
|
+
elif _data['message'] == "InvalidParam":
|
272
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
273
|
+
elif _data['message'] == "InvalidToken":
|
274
|
+
raise errors.globals.AuthError("Token is not valid.")
|
275
|
+
|
276
|
+
elif res.status_code == 401:
|
277
|
+
raise errors.globals.AuthError(_data['message'])
|
278
|
+
|
279
|
+
elif res.status_code == 403:
|
280
|
+
raise errors.globals.PermissionError(_data['message'])
|
281
|
+
|
282
|
+
elif res.status_code == 404:
|
283
|
+
raise errors.globals.NotFoundError(_data['message'])
|
208
284
|
|
209
285
|
class User(Entity):
|
210
286
|
"""
|
@@ -261,8 +337,27 @@ class User(Entity):
|
|
261
337
|
|
262
338
|
if res.status_code == 200:
|
263
339
|
self.xp += amount * boost
|
264
|
-
|
265
|
-
|
340
|
+
elif 500 <= res.status_code < 600:
|
341
|
+
raise errors.globals.ServerDownError()
|
342
|
+
|
343
|
+
_data = res.json()
|
344
|
+
|
345
|
+
if res.status_code == 400:
|
346
|
+
if _data['message'] == "MissingParam":
|
347
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
348
|
+
elif _data['message'] == "InvalidParam":
|
349
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
350
|
+
elif _data['message'] == "InvalidToken":
|
351
|
+
raise errors.globals.AuthError("Token is not valid.")
|
352
|
+
|
353
|
+
elif res.status_code == 401:
|
354
|
+
raise errors.globals.AuthError(_data['message'])
|
355
|
+
|
356
|
+
elif res.status_code == 403:
|
357
|
+
raise errors.globals.PermissionError(_data['message'])
|
358
|
+
|
359
|
+
elif res.status_code == 404:
|
360
|
+
raise errors.globals.NotFoundError(_data['message'])
|
266
361
|
|
267
362
|
def edit_boost(self, name: str, multiplier: int = -1) -> None:
|
268
363
|
res = requests.post(f"{self._url}/edit_boost?boost={name}&multiplier={multiplier}", headers = self._headers)
|
@@ -272,8 +367,27 @@ class User(Entity):
|
|
272
367
|
self.boosts[name] = multiplier
|
273
368
|
else:
|
274
369
|
del self.boosts[name]
|
275
|
-
|
276
|
-
|
370
|
+
elif 500 <= res.status_code < 600:
|
371
|
+
raise errors.globals.ServerDownError()
|
372
|
+
|
373
|
+
_data = res.json()
|
374
|
+
|
375
|
+
if res.status_code == 400:
|
376
|
+
if _data['message'] == "MissingParam":
|
377
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
378
|
+
elif _data['message'] == "InvalidParam":
|
379
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
380
|
+
elif _data['message'] == "InvalidToken":
|
381
|
+
raise errors.globals.AuthError("Token is not valid.")
|
382
|
+
|
383
|
+
elif res.status_code == 401:
|
384
|
+
raise errors.globals.AuthError(_data['message'])
|
385
|
+
|
386
|
+
elif res.status_code == 403:
|
387
|
+
raise errors.globals.PermissionError(_data['message'])
|
388
|
+
|
389
|
+
elif res.status_code == 404:
|
390
|
+
raise errors.globals.NotFoundError(_data['message'])
|
277
391
|
|
278
392
|
def get_groups(self) -> list[Entity]:
|
279
393
|
res = requests.get(f"{self._url}/groups", headers = self._headers)
|
@@ -291,35 +405,107 @@ class User(Entity):
|
|
291
405
|
groups.append(group)
|
292
406
|
|
293
407
|
return groups
|
294
|
-
|
295
|
-
|
408
|
+
elif 500 <= res.status_code < 600:
|
409
|
+
raise errors.globals.ServerDownError()
|
296
410
|
|
297
|
-
|
298
|
-
"""
|
299
|
-
Permissions d'un membre à l'échelle d'un groupe
|
300
|
-
"""
|
411
|
+
_data = res.json()
|
301
412
|
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
413
|
+
if res.status_code == 400:
|
414
|
+
if _data['message'] == "MissingParam":
|
415
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
416
|
+
elif _data['message'] == "InvalidParam":
|
417
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
418
|
+
elif _data['message'] == "InvalidToken":
|
419
|
+
raise errors.globals.AuthError("Token is not valid.")
|
420
|
+
|
421
|
+
elif res.status_code == 401:
|
422
|
+
raise errors.globals.AuthError(_data['message'])
|
306
423
|
|
307
|
-
|
308
|
-
|
309
|
-
|
424
|
+
elif res.status_code == 403:
|
425
|
+
raise errors.globals.PermissionError(_data['message'])
|
426
|
+
|
427
|
+
elif res.status_code == 404:
|
428
|
+
raise errors.globals.NotFoundError(_data['message'])
|
310
429
|
|
311
430
|
class GroupMember:
|
312
431
|
"""
|
313
432
|
Membre au sein d'une entité collective
|
314
433
|
|
315
434
|
## Attributs
|
316
|
-
-
|
317
|
-
|
435
|
+
- level: `int`\n
|
436
|
+
Niveau d'accréditation d'un membre au sein d'un groupe
|
437
|
+
- manager: `bool`\n
|
438
|
+
Permission ou non de modifier le groupe
|
318
439
|
"""
|
319
440
|
|
320
441
|
def __init__(self, id: NSID) -> None:
|
442
|
+
self._group_url: str
|
443
|
+
self._headers: dict
|
444
|
+
|
321
445
|
self.id = id
|
322
|
-
self.
|
446
|
+
self.level: int = 1 # Plus un level est haut, plus il a de pouvoir sur les autres membres
|
447
|
+
self.manager: bool = False
|
448
|
+
|
449
|
+
def _load(self, _data: dict, group_url: str, headers: dict):
|
450
|
+
self._group_url = group_url
|
451
|
+
self._headers = headers
|
452
|
+
|
453
|
+
self.level = _data['level']
|
454
|
+
self.manager = _data['manager']
|
455
|
+
|
456
|
+
def edit(self, level: int = None, manager: bool = None) -> None:
|
457
|
+
params = {
|
458
|
+
"member": self.id
|
459
|
+
}
|
460
|
+
|
461
|
+
if level is not None: params['level'] = level
|
462
|
+
if manager is not None: params['manager'] = str(manager).lower()
|
463
|
+
|
464
|
+
res = requests.post(f"{self._group_url}/edit_member", params = params, headers = self._headers)
|
465
|
+
|
466
|
+
if res.status_code == 200:
|
467
|
+
if level:
|
468
|
+
self.level = level
|
469
|
+
else:
|
470
|
+
return
|
471
|
+
|
472
|
+
if manager is not None:
|
473
|
+
self.manager = manager
|
474
|
+
|
475
|
+
elif 500 <= res.status_code < 600:
|
476
|
+
raise errors.globals.ServerDownError()
|
477
|
+
|
478
|
+
_data = res.json()
|
479
|
+
|
480
|
+
if res.status_code == 400:
|
481
|
+
if _data['message'] == "MissingParam":
|
482
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
483
|
+
elif _data['message'] == "InvalidParam":
|
484
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
485
|
+
elif _data['message'] == "InvalidToken":
|
486
|
+
raise errors.globals.AuthError("Token is not valid.")
|
487
|
+
|
488
|
+
elif res.status_code == 401:
|
489
|
+
raise errors.globals.AuthError(_data['message'])
|
490
|
+
|
491
|
+
elif res.status_code == 403:
|
492
|
+
raise errors.globals.PermissionError(_data['message'])
|
493
|
+
|
494
|
+
elif res.status_code == 404:
|
495
|
+
raise errors.globals.NotFoundError(_data['message'])
|
496
|
+
|
497
|
+
def promote(self, level: int = None):
|
498
|
+
if level is None:
|
499
|
+
level = self.level + 1
|
500
|
+
|
501
|
+
self.edit(level = level)
|
502
|
+
|
503
|
+
def demote(self, level: int = None):
|
504
|
+
if level is None:
|
505
|
+
level = self.level - 1
|
506
|
+
|
507
|
+
self.edit(level = level)
|
508
|
+
|
323
509
|
|
324
510
|
class Organization(Entity):
|
325
511
|
"""
|
@@ -329,14 +515,12 @@ class Organization(Entity):
|
|
329
515
|
- Tous les attributs de la classe `.Entity`
|
330
516
|
- owner: `.Entity`\n
|
331
517
|
Utilisateur ou entreprise propriétaire de l'entité collective
|
332
|
-
-
|
333
|
-
|
334
|
-
- certifications: `dict[str,
|
518
|
+
- avatar_url: `str`\n
|
519
|
+
Url du logo de l'entité collective
|
520
|
+
- certifications: `dict[str, Any]`\n
|
335
521
|
Liste des certifications et de leur date d'ajout
|
336
522
|
- members: `list[.GroupMember]`\n
|
337
523
|
Liste des membres de l'entreprise
|
338
|
-
- parts: `list[.Share]`\n
|
339
|
-
Liste des actions émises par l'entreprise
|
340
524
|
"""
|
341
525
|
|
342
526
|
def __init__(self, id: NSID) -> None:
|
@@ -346,10 +530,11 @@ class Organization(Entity):
|
|
346
530
|
self.avatar_url: str = self._url + '/avatar'
|
347
531
|
|
348
532
|
self.certifications: dict = {}
|
349
|
-
self.members:
|
533
|
+
self.members: dict[NSID, GroupMember] = {}
|
350
534
|
|
351
535
|
def _load(self, _data: dict, url: str, headers: dict):
|
352
536
|
self._url = url + '/model/organizations/' + _data['id']
|
537
|
+
self.avatar_url = url + '/avatar'
|
353
538
|
self._headers = headers
|
354
539
|
|
355
540
|
self.id = NSID(_data['id'])
|
@@ -375,11 +560,11 @@ class Organization(Entity):
|
|
375
560
|
|
376
561
|
self.owner._load(_owner, url, headers)
|
377
562
|
|
378
|
-
for _member in _data['members']:
|
379
|
-
member = GroupMember(
|
380
|
-
member.
|
563
|
+
for _id, _member in _data['members'].items():
|
564
|
+
member = GroupMember(_id)
|
565
|
+
member._load(_member, self._url, headers)
|
381
566
|
|
382
|
-
self.members.
|
567
|
+
self.members[member.id] = member
|
383
568
|
|
384
569
|
self.certifications = _data['certifications']
|
385
570
|
|
@@ -388,8 +573,27 @@ class Organization(Entity):
|
|
388
573
|
|
389
574
|
if res.status_code == 200:
|
390
575
|
self.certifications[certification] = int(round(time.time()) + __expires)
|
391
|
-
|
392
|
-
|
576
|
+
elif 500 <= res.status_code < 600:
|
577
|
+
raise errors.globals.ServerDownError()
|
578
|
+
|
579
|
+
_data = res.json()
|
580
|
+
|
581
|
+
if res.status_code == 400:
|
582
|
+
if _data['message'] == "MissingParam":
|
583
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
584
|
+
elif _data['message'] == "InvalidParam":
|
585
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
586
|
+
elif _data['message'] == "InvalidToken":
|
587
|
+
raise errors.globals.AuthError("Token is not valid.")
|
588
|
+
|
589
|
+
elif res.status_code == 401:
|
590
|
+
raise errors.globals.AuthError(_data['message'])
|
591
|
+
|
592
|
+
elif res.status_code == 403:
|
593
|
+
raise errors.globals.PermissionError(_data['message'])
|
594
|
+
|
595
|
+
elif res.status_code == 404:
|
596
|
+
raise errors.globals.NotFoundError(_data['message'])
|
393
597
|
|
394
598
|
def has_certification(self, certification: str) -> bool:
|
395
599
|
return certification in self.certifications.keys()
|
@@ -399,44 +603,76 @@ class Organization(Entity):
|
|
399
603
|
|
400
604
|
if res.status_code == 200:
|
401
605
|
del self.certifications[certification]
|
402
|
-
|
403
|
-
|
606
|
+
elif 500 <= res.status_code < 600:
|
607
|
+
raise errors.globals.ServerDownError()
|
608
|
+
|
609
|
+
_data = res.json()
|
610
|
+
|
611
|
+
if res.status_code == 400:
|
612
|
+
if _data['message'] == "MissingParam":
|
613
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
614
|
+
elif _data['message'] == "InvalidParam":
|
615
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
616
|
+
elif _data['message'] == "InvalidToken":
|
617
|
+
raise errors.globals.AuthError("Token is not valid.")
|
404
618
|
|
405
|
-
|
619
|
+
elif res.status_code == 401:
|
620
|
+
raise errors.globals.AuthError(_data['message'])
|
621
|
+
|
622
|
+
elif res.status_code == 403:
|
623
|
+
raise errors.globals.PermissionError(_data['message'])
|
624
|
+
|
625
|
+
elif res.status_code == 404:
|
626
|
+
raise errors.globals.NotFoundError(_data['message'])
|
627
|
+
|
628
|
+
def add_member(self, member: NSID) -> GroupMember:
|
406
629
|
if not isinstance(member, NSID):
|
407
630
|
raise TypeError("L'entrée membre doit être de type NSID")
|
408
631
|
|
409
|
-
res = requests.post(f"{self._url}/add_member?
|
410
|
-
"permissions": permissions.__dict__
|
411
|
-
})
|
632
|
+
res = requests.post(f"{self._url}/add_member?member={member}", headers = self._headers, json = {})
|
412
633
|
|
413
634
|
if res.status_code == 200:
|
414
635
|
member = GroupMember(member)
|
415
|
-
member.
|
636
|
+
member._group_url = self._url
|
637
|
+
member._headers = self._headers
|
416
638
|
|
417
|
-
self.members.
|
418
|
-
|
419
|
-
|
639
|
+
self.members[member.id] = member
|
640
|
+
return member
|
641
|
+
elif 500 <= res.status_code < 600:
|
642
|
+
raise errors.globals.ServerDownError()
|
643
|
+
|
644
|
+
_data = res.json()
|
645
|
+
|
646
|
+
if res.status_code == 400:
|
647
|
+
if _data['message'] == "MissingParam":
|
648
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
649
|
+
elif _data['message'] == "InvalidParam":
|
650
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
651
|
+
elif _data['message'] == "InvalidToken":
|
652
|
+
raise errors.globals.AuthError("Token is not valid.")
|
653
|
+
|
654
|
+
elif res.status_code == 401:
|
655
|
+
raise errors.globals.AuthError(_data['message'])
|
656
|
+
|
657
|
+
elif res.status_code == 403:
|
658
|
+
raise errors.globals.PermissionError(_data['message'])
|
659
|
+
|
660
|
+
elif res.status_code == 404:
|
661
|
+
raise errors.globals.NotFoundError(_data['message'])
|
420
662
|
|
421
663
|
def remove_member(self, member: GroupMember) -> None:
|
422
|
-
|
664
|
+
member.demote(level = 0)
|
423
665
|
|
424
|
-
|
425
|
-
if _member.id == member.id:
|
426
|
-
self.members.remove(_member)
|
666
|
+
del self.members[member.id]
|
427
667
|
|
428
668
|
def set_owner(self, member: User) -> None:
|
429
669
|
self.owner = member
|
430
670
|
|
431
671
|
def get_member(self, id: NSID) -> GroupMember:
|
432
|
-
|
433
|
-
if member.id == id:
|
434
|
-
return member
|
435
|
-
else:
|
436
|
-
return
|
672
|
+
return self.members.get(id)
|
437
673
|
|
438
674
|
def get_members_by_attr(self, attribute: str = "id") -> list[str]:
|
439
|
-
return [ member.__getattribute__(attribute) for member in self.members ]
|
675
|
+
return [ member.__getattribute__(attribute) for member in self.members.values() ]
|
440
676
|
|
441
677
|
def save_avatar(self, data: bytes = None):
|
442
678
|
pass
|
nsarchive/models/justice.py
CHANGED
@@ -3,6 +3,8 @@ import time
|
|
3
3
|
|
4
4
|
from .base import NSID
|
5
5
|
|
6
|
+
from .. import errors
|
7
|
+
|
6
8
|
class Report:
|
7
9
|
def __init__(self, id: NSID):
|
8
10
|
self._url: str = ""
|
@@ -46,8 +48,27 @@ class Report:
|
|
46
48
|
|
47
49
|
if res.status_code == 200:
|
48
50
|
self.status = status
|
49
|
-
|
50
|
-
|
51
|
+
elif 500 <= res.status_code < 600:
|
52
|
+
raise errors.globals.ServerDownError()
|
53
|
+
|
54
|
+
_data = res.json()
|
55
|
+
|
56
|
+
if res.status_code == 400:
|
57
|
+
if _data['message'] == "MissingParam":
|
58
|
+
raise errors.globals.MissingParamError(f"Missing parameter '{_data['param']}'.")
|
59
|
+
elif _data['message'] == "InvalidParam":
|
60
|
+
raise errors.globals.InvalidParamError(f"Invalid parameter '{_data['param']}'.")
|
61
|
+
elif _data['message'] == "InvalidToken":
|
62
|
+
raise errors.globals.AuthError("Token is not valid.")
|
63
|
+
|
64
|
+
elif res.status_code == 401:
|
65
|
+
raise errors.globals.AuthError(_data['message'])
|
66
|
+
|
67
|
+
elif res.status_code == 403:
|
68
|
+
raise errors.globals.PermissionError(_data['message'])
|
69
|
+
|
70
|
+
elif res.status_code == 404:
|
71
|
+
raise errors.globals.NotFoundError(_data['message'])
|
51
72
|
|
52
73
|
class Sanction:
|
53
74
|
def __init__(self, id: NSID):
|
@@ -60,7 +81,7 @@ class Sanction:
|
|
60
81
|
self.date: int = round(time.time())
|
61
82
|
self.duration: int = 0
|
62
83
|
self.title: str = None
|
63
|
-
self.
|
84
|
+
self.lawsuit: NSID = NSID('0')
|
64
85
|
|
65
86
|
def _load(self, _data: dict, url: str, headers: dict) -> None:
|
66
87
|
self._url = url
|
@@ -72,7 +93,7 @@ class Sanction:
|
|
72
93
|
self.date = _data['date']
|
73
94
|
self.duration = _data['duration']
|
74
95
|
self.title = _data['title']
|
75
|
-
self.
|
96
|
+
self.lawsuit = NSID(_data['lawsuit'])
|
76
97
|
|
77
98
|
class Lawsuit:
|
78
99
|
def __init__(self, id: NSID):
|