nsarchive 0.0.7a0__py3-none-any.whl → 0.0.9a0__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 +124 -6
- nsarchive/cls/archives.py +52 -0
- nsarchive/cls/entities.py +1 -1
- nsarchive/cls/votes.py +1 -1
- {nsarchive-0.0.7a0.dist-info → nsarchive-0.0.9a0.dist-info}/METADATA +1 -1
- nsarchive-0.0.9a0.dist-info/RECORD +10 -0
- nsarchive-0.0.7a0.dist-info/RECORD +0 -9
- {nsarchive-0.0.7a0.dist-info → nsarchive-0.0.9a0.dist-info}/LICENSE +0 -0
- {nsarchive-0.0.7a0.dist-info → nsarchive-0.0.9a0.dist-info}/WHEEL +0 -0
nsarchive/__init__.py
CHANGED
@@ -3,6 +3,7 @@ import time
|
|
3
3
|
import deta
|
4
4
|
|
5
5
|
from .cls.entities import *
|
6
|
+
from .cls.archives import *
|
6
7
|
from .cls.votes import *
|
7
8
|
from .cls.bank import *
|
8
9
|
|
@@ -13,6 +14,7 @@ class EntityInstance:
|
|
13
14
|
self.db = deta.Deta(token)
|
14
15
|
self.base = self.db.Base('entities')
|
15
16
|
self.electors = self.db.Base('electors')
|
17
|
+
self.archives = self.db.Base('archives')
|
16
18
|
|
17
19
|
def get_entity(self, id: str) -> User | Organization | Entity:
|
18
20
|
id = id.upper()
|
@@ -58,11 +60,14 @@ class EntityInstance:
|
|
58
60
|
if type(entity) == Organization:
|
59
61
|
_data['owner_id'] = entity.owner.id.upper() if entity.owner else "0"
|
60
62
|
_data['members'] = [ member.id.upper() for member in entity.members ] if entity.members else []
|
61
|
-
_data['certifications']
|
63
|
+
_data['certifications'] = entity.certifications
|
62
64
|
elif type(entity) == User:
|
63
65
|
_data['boosts'] = entity.boosts
|
64
66
|
|
65
67
|
_base.put(_data, entity.id.upper(), expire_in = 3 * 31536000) # Données supprimées tous les trois ans
|
68
|
+
|
69
|
+
def delete_entity(self, entity: Entity) -> None:
|
70
|
+
self.base.delete(entity.id.upper())
|
66
71
|
|
67
72
|
def get_elector(self, id: str) -> Elector:
|
68
73
|
id = id.upper()
|
@@ -89,21 +94,62 @@ class EntityInstance:
|
|
89
94
|
|
90
95
|
if listquery is not None:
|
91
96
|
for item in _res:
|
92
|
-
for target, value in listquery:
|
97
|
+
for target, value in listquery.items():
|
93
98
|
if value not in item[target]:
|
94
99
|
_res.remove(item)
|
95
100
|
|
96
101
|
return _res
|
97
102
|
|
98
|
-
def get_entity_groups(self, id:
|
99
|
-
groups = self.fetch({'_type': 'organization'}, {'members':
|
103
|
+
def get_entity_groups(self, id: str) -> list[Organization]:
|
104
|
+
groups = self.fetch({'_type': 'organization'}, {'members': id})
|
100
105
|
|
101
|
-
return [ self.get_entity(
|
106
|
+
return [ self.get_entity(group['key']) for group in groups ]
|
107
|
+
|
108
|
+
def _add_archive(self, archive: Action):
|
109
|
+
_data = archive.__dict__.copy()
|
102
110
|
|
111
|
+
if type(archive) == ModAction:
|
112
|
+
_data['type'] = "sanction"
|
113
|
+
elif type(archive) == AdminAction:
|
114
|
+
_data['type'] = "adminaction"
|
115
|
+
else:
|
116
|
+
_data['type'] = "unknown"
|
117
|
+
|
118
|
+
del _data['id']
|
119
|
+
|
120
|
+
self.archives.put(key = archive.id, data = _data)
|
121
|
+
|
122
|
+
def _get_archive(self, id: str) -> Action | ModAction | AdminAction:
|
123
|
+
_data = self.archives.get(id)
|
124
|
+
|
125
|
+
if _data is None:
|
126
|
+
return None
|
127
|
+
|
128
|
+
if _data['type'] == "sanction": # Mute, ban, GAV, kick, détention, prune (xp seulement)
|
129
|
+
archive = ModAction(id, _data['author'], _data['target'])
|
130
|
+
|
131
|
+
archive.details = _data['details']
|
132
|
+
archive.major = _data['major']
|
133
|
+
archive.duration = _data['duration']
|
134
|
+
elif _data['type'] == "adminaction": # Renommage, promotion, démotion
|
135
|
+
archive = AdminAction(id, _data['author'], _data['target'])
|
136
|
+
|
137
|
+
archive.details = _data['details']
|
138
|
+
archive.new_state = _data['new_state']
|
139
|
+
else:
|
140
|
+
archive = Action(id, _data['author'], _data['target'])
|
141
|
+
|
142
|
+
archive.action = _data['action']
|
143
|
+
archive.date = _data['date']
|
144
|
+
|
145
|
+
return archive
|
146
|
+
|
103
147
|
class RepublicInstance:
|
104
148
|
def __init__(self, token: str) -> None:
|
105
149
|
self.db = deta.Deta(token)
|
106
150
|
self.votes = self.db.Base('votes')
|
151
|
+
self.archives = self.db.Base('archives')
|
152
|
+
self.functions = self.db.base('functions') # Liste des fonctionnaires
|
107
153
|
|
108
154
|
def get_vote(self, id: str) -> Vote | ClosedVote:
|
109
155
|
id = id.upper()
|
@@ -138,9 +184,50 @@ class RepublicInstance:
|
|
138
184
|
|
139
185
|
self.votes.put(_data, vote.id.upper())
|
140
186
|
|
187
|
+
def _add_archive(self, archive: Action):
|
188
|
+
_data = archive.__dict__.copy()
|
189
|
+
|
190
|
+
if type(archive) == Election:
|
191
|
+
_data['type'] = "election"
|
192
|
+
elif type(archive) == Promotion:
|
193
|
+
_data['type'] = "promotion"
|
194
|
+
elif type(archive) == Demotion:
|
195
|
+
_data['type'] = "demotion"
|
196
|
+
else:
|
197
|
+
_data['type'] = "unknown"
|
198
|
+
|
199
|
+
del _data['id']
|
200
|
+
|
201
|
+
self.archives.put(key = archive.id, data = _data)
|
202
|
+
|
203
|
+
def _get_archive(self, id: str) -> Action | Election | Promotion | Demotion:
|
204
|
+
_data = self.archives.get(id)
|
205
|
+
|
206
|
+
if _data is None:
|
207
|
+
return None
|
208
|
+
|
209
|
+
if _data['type'] == "election":
|
210
|
+
archive = Election(id, _data['author'], _data['target'], _data['position'])
|
211
|
+
|
212
|
+
archive.positive_votes = _data['positive_votes']
|
213
|
+
archive.total_votes = _data['total_votes']
|
214
|
+
elif _data['type'] == "adminaction": # Renommage, promotion, démotion
|
215
|
+
archive = AdminAction(id, _data['author'], _data['target'])
|
216
|
+
|
217
|
+
archive.details = _data['details']
|
218
|
+
archive.new_state = _data['new_state']
|
219
|
+
else:
|
220
|
+
archive = Action(id, _data['author'], _data['target'])
|
221
|
+
|
222
|
+
archive.action = _data['action']
|
223
|
+
archive.date = _data['date']
|
224
|
+
|
225
|
+
return archive
|
226
|
+
|
141
227
|
class BankInstance:
|
142
228
|
def __init__(self, token: str) -> None:
|
143
229
|
self.db = deta.Deta(token)
|
230
|
+
self.archives = self.db.Base('archives')
|
144
231
|
self.accounts = self.db.Base('accounts')
|
145
232
|
self.registry = self.db.Base('banks')
|
146
233
|
|
@@ -167,4 +254,35 @@ class BankInstance:
|
|
167
254
|
'bank': acc.bank
|
168
255
|
}
|
169
256
|
|
170
|
-
self.accounts.put(_data, acc.id.upper())
|
257
|
+
self.accounts.put(_data, acc.id.upper())
|
258
|
+
|
259
|
+
def _add_archive(self, _archive: Action):
|
260
|
+
_data = _archive.__dict__.copy()
|
261
|
+
|
262
|
+
if type(_archive) == Transaction:
|
263
|
+
_data['type'] = "transaction"
|
264
|
+
else:
|
265
|
+
_data['type'] = "unknown"
|
266
|
+
|
267
|
+
del _data['id']
|
268
|
+
|
269
|
+
self.archives.put(key = _archive.id, data = _data)
|
270
|
+
|
271
|
+
def _get_archive(self, id: str) -> Action | Transaction:
|
272
|
+
_data = self.archives.get(id)
|
273
|
+
|
274
|
+
if _data is None:
|
275
|
+
return None
|
276
|
+
|
277
|
+
if _data['type'] == "transaction":
|
278
|
+
archive = Transaction(id, _data['author'], _data['target'], _data['amount'])
|
279
|
+
|
280
|
+
archive.reason = _data['reason']
|
281
|
+
archive.currency = _data['currency']
|
282
|
+
else:
|
283
|
+
archive = Action(id, _data['author'], _data['target'])
|
284
|
+
|
285
|
+
archive.action = _data['action']
|
286
|
+
archive.date = _data['date']
|
287
|
+
|
288
|
+
return archive
|
@@ -0,0 +1,52 @@
|
|
1
|
+
class Action:
|
2
|
+
def __init__(self, id: str, author: str = '11625D9061021010', target: str = '0') -> None:
|
3
|
+
self.id: str = id
|
4
|
+
self.date: int = 0
|
5
|
+
self.action: str = ""
|
6
|
+
self.author: str = author
|
7
|
+
self.target: str = target
|
8
|
+
|
9
|
+
# Entities
|
10
|
+
|
11
|
+
class ModAction(Action):
|
12
|
+
def __init__(self, id: str, author: str, target: str) -> None:
|
13
|
+
super().__init__(id, author, target)
|
14
|
+
self.details: str = ""
|
15
|
+
self.major: bool = False # Sanction majeure ou non
|
16
|
+
self.duration: int = 0 # Durée en secondes, 0 = définitif
|
17
|
+
|
18
|
+
class AdminAction(Action):
|
19
|
+
def __init__(self, id: str, author: str, target: str) -> None:
|
20
|
+
super().__init__(id, author, target)
|
21
|
+
self.details: str = ""
|
22
|
+
self.new_state: str | int | bool = None
|
23
|
+
|
24
|
+
|
25
|
+
# Community
|
26
|
+
|
27
|
+
class Election(Action):
|
28
|
+
def __init__(self, id: str, author: str, target: str, position: str) -> None:
|
29
|
+
super().__init__(id, author, target)
|
30
|
+
self.position: str = position
|
31
|
+
self.positive_votes: int = 0
|
32
|
+
self.total_votes: int = 0
|
33
|
+
|
34
|
+
class Promotion(Action):
|
35
|
+
def __init__(self, id: str, author: str, target: str, position: str) -> None:
|
36
|
+
super().__init__(id, author, target)
|
37
|
+
self.position: str = position
|
38
|
+
|
39
|
+
class Demotion(Action):
|
40
|
+
def __init__(self, id: str, author: str, target: str) -> None:
|
41
|
+
super().__init__(id, author, target)
|
42
|
+
self.reason: str = None
|
43
|
+
|
44
|
+
# Bank
|
45
|
+
|
46
|
+
class Transaction(Action):
|
47
|
+
def __init__(self, id: str, author: str, target: str, amount: int) -> None:
|
48
|
+
super().__init__(id, author, target)
|
49
|
+
|
50
|
+
self.amount: int = amount
|
51
|
+
self.currency: str = 'XC'
|
52
|
+
self.reason: str = None
|
nsarchive/cls/entities.py
CHANGED
@@ -5,7 +5,7 @@ from .exceptions import *
|
|
5
5
|
class Entity:
|
6
6
|
def __init__(self, id: str):
|
7
7
|
self.id: str = id # ID hexadécimal de l'entité
|
8
|
-
self.name: str =
|
8
|
+
self.name: str = "Entité Inconnue"
|
9
9
|
self.registerDate: int = 0
|
10
10
|
self.legalPosition: int = 'Normal'
|
11
11
|
self.xp: int = 0
|
nsarchive/cls/votes.py
CHANGED
@@ -0,0 +1,10 @@
|
|
1
|
+
nsarchive/__init__.py,sha256=uno-FOUWDtdaMVeufH4C7FuRq8l_dp46EgoJokI-Sm0,9516
|
2
|
+
nsarchive/cls/archives.py,sha256=FNE8U3IVgjYCUZkBoDqeyQJSHKmRjP2UAzBfmg8nK0M,1735
|
3
|
+
nsarchive/cls/bank.py,sha256=OactEpRn8PGv7BwnBUbMpzgHqrvv4yx526AMzh9uBO8,220
|
4
|
+
nsarchive/cls/entities.py,sha256=eY5Fjxt5iixvJCxDnCNbD_lIMq9ojbCLDduPqe52oWM,2556
|
5
|
+
nsarchive/cls/exceptions.py,sha256=TrH9PvHhVZi7wap9ZfBLGRWJY3OBCYgWAMnco5uadYY,420
|
6
|
+
nsarchive/cls/votes.py,sha256=q_Y_KcFoqoXWzh_FSWz-1tJH7fGdGJDCORYUOWCtdS8,502
|
7
|
+
nsarchive-0.0.9a0.dist-info/LICENSE,sha256=aFLFZg6LEJFpTlNQ8su3__jw4GfV-xWBmC1cePkKZVw,35802
|
8
|
+
nsarchive-0.0.9a0.dist-info/METADATA,sha256=7piU3_JrfSVGMC12pC02kwbio2JPRqLxyKlRk47bvnE,5554
|
9
|
+
nsarchive-0.0.9a0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
10
|
+
nsarchive-0.0.9a0.dist-info/RECORD,,
|
@@ -1,9 +0,0 @@
|
|
1
|
-
nsarchive/__init__.py,sha256=3zNWlcKF5Cs5ZCgVY_i4RbHdbMTDVWRlZa_8JtlrqFU,5492
|
2
|
-
nsarchive/cls/bank.py,sha256=OactEpRn8PGv7BwnBUbMpzgHqrvv4yx526AMzh9uBO8,220
|
3
|
-
nsarchive/cls/entities.py,sha256=mhBHZBtYK1E2dfTDoFHNdw1uu5QsnOc-Utuu5EjtV7c,2556
|
4
|
-
nsarchive/cls/exceptions.py,sha256=TrH9PvHhVZi7wap9ZfBLGRWJY3OBCYgWAMnco5uadYY,420
|
5
|
-
nsarchive/cls/votes.py,sha256=qaWVgfhk5GBccilFSwoZ0E9qE--IX_3HuOBoQAHD2jA,502
|
6
|
-
nsarchive-0.0.7a0.dist-info/LICENSE,sha256=aFLFZg6LEJFpTlNQ8su3__jw4GfV-xWBmC1cePkKZVw,35802
|
7
|
-
nsarchive-0.0.7a0.dist-info/METADATA,sha256=NAWRyMMcf3NkeYj9eSSmF_E52Goabm8ruXA8fr_N2sU,5554
|
8
|
-
nsarchive-0.0.7a0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
9
|
-
nsarchive-0.0.7a0.dist-info/RECORD,,
|
File without changes
|
File without changes
|