nsarchive 2.0.0a4__tar.gz → 2.0.0a5__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nsarchive
3
- Version: 2.0.0a4
3
+ Version: 2.0.0a5
4
4
  Summary: API-wrapper pour récupérer des données liées à Nation
5
5
  License: GPL-3.0
6
6
  Author: happex
@@ -18,6 +18,7 @@ from .cls.base import NSID
18
18
  from .cls.archives import *
19
19
  from .cls.entities import *
20
20
  from .cls.republic import *
21
+ from .cls.economy import *
21
22
 
22
23
  from .cls.exceptions import *
23
24
 
@@ -19,17 +19,20 @@ class Item:
19
19
  class Inventory:
20
20
  def __init__(self, owner_id: NSID) -> None:
21
21
  self.owner_id: NSID = NSID(owner_id)
22
- self.objects: list[Item] = []
22
+ self.objects: dict[str, NSID] = {}
23
23
 
24
24
  def append(self, item: Item, quantity: int = 1):
25
- self.objects.extend(quantity * [ item ])
25
+ if item.id in self.objects.keys():
26
+ self.objects[item.id] += quantity
27
+ else:
28
+ self.objects[item.id] = quantity
26
29
 
27
30
  def throw(self, item: Item, quantity: int = 1):
28
- if quantity > self.objects.count(item):
29
- quantity = self.objects.count(item)
30
-
31
- for i in range(quantity):
32
- self.objects.remove(item)
31
+ if item.id in self.objects.keys():
32
+ if self.objects[item.id] > quantity:
33
+ self.objects[item.id] -= quantity
34
+ else:
35
+ self.objects[item.id] = 0
33
36
 
34
37
  class Sale:
35
38
  def __init__(self, id: NSID, item: Item) -> None:
@@ -43,7 +43,7 @@ class Entity:
43
43
  self.id: NSID = NSID(id) # ID hexadécimal de l'entité (ou nom dans le cas de l'entreprise)
44
44
  self.name: str = "Entité Inconnue"
45
45
  self.registerDate: int = 0
46
- self.legalPosition: Position = Position()
46
+ self.position: Position = Position()
47
47
  self.additional: dict = {}
48
48
 
49
49
  def set_name(self, new_name: str) -> None:
@@ -53,7 +53,7 @@ class Entity:
53
53
  self.name = new_name
54
54
 
55
55
  def set_position(self, position: str) -> None:
56
- self.legalPosition = position
56
+ self.position = position
57
57
 
58
58
  def add_link(self, key: str, value: str | int) -> None:
59
59
  if isinstance(value, str) or isinstance(value, int):
@@ -11,7 +11,7 @@ class Vote:
11
11
  self.startDate: int = 0
12
12
  self.endDate: int = 0
13
13
 
14
- class ClosedVote(Vote): # Meilleur nom pour cette classe en v2
14
+ class Referendum(Vote):
15
15
  def __init__(self, id: str | NSID, title: str) -> None:
16
16
  super().__init__(id, title, ('yes', 'no', 'blank'))
17
17
 
@@ -39,8 +39,9 @@ class EconomyInstance(Instance):
39
39
  account = BankAccount(id)
40
40
  account.amount = _data['amount']
41
41
  account.frozen = _data['frozen']
42
- account.owner = _data['owner_id']
42
+ account.owner = NSID(_data['owner_id'])
43
43
  account.bank = _data['bank']
44
+ account.income = _data['income']
44
45
 
45
46
  return account
46
47
 
@@ -52,7 +53,8 @@ class EconomyInstance(Instance):
52
53
  'amount': account.amount,
53
54
  'frozen': account.frozen,
54
55
  'owner_id': account.owner,
55
- 'bank': account.bank
56
+ 'bank': account.bank,
57
+ 'income': account.income
56
58
  }
57
59
 
58
60
  self._put_in_db('accounts', _data)
@@ -66,19 +68,66 @@ class EconomyInstance(Instance):
66
68
  self.save_account(account)
67
69
 
68
70
  """
69
- ---- VENTES ----
71
+ ---- OBJETS & VENTES ----
70
72
  """
71
73
 
72
- def get_sale(self, id: str | NSID) -> Sale | None:
74
+ def save_item(self, item: Item) -> None:
75
+ """
76
+ Sauvegarde des infos à propos d'un item.
77
+
78
+ ## Paramètres
79
+ item: `.Item`\n
80
+ Article à sauvegarder
81
+ """
82
+
83
+ _item = item.__dict__
84
+ self._put_in_db('items', _item)
85
+
86
+ def get_item(self, id: NSID) -> Item | None:
87
+ """
88
+ Récupère des informations à propos d'un item.
89
+
90
+ ## Paramètres
91
+ id: `NSID`\n
92
+ ID de l'item
93
+
94
+ ## Retourne
95
+ - `.Item` si quelque chose est trouvé, sinon
96
+ - `None`
97
+ """
98
+
99
+ _item = self._get_by_ID('items', id)
100
+
101
+ if _item is None:
102
+ return
103
+
104
+ item = Item(id)
105
+ item.title = _item['title']
106
+ item.emoji = _item['emoji']
107
+
108
+ return item
109
+
110
+ def delete_item(self, item: Item) -> None:
111
+ """
112
+ Annule le référencement d'un item.
113
+
114
+ ## Paramètres
115
+ item: `.Item`\n
116
+ Item à vendre
117
+ """
118
+
119
+ self._delete_by_ID('items', item.id)
120
+
121
+ def get_sale(self, id: NSID) -> Sale | None:
73
122
  """
74
123
  Récupère une vente disponible sur le marketplace.
75
124
 
76
125
  ## Paramètres
77
- id: `str | NSID`\n
78
- ID de l'item.
126
+ id: `NSID`\n
127
+ ID de la vente.
79
128
 
80
129
  ## Renvoie
81
- - `.Item | None`
130
+ - `.Sale | None`
82
131
  """
83
132
 
84
133
  id = NSID(id)
@@ -87,8 +136,10 @@ class EconomyInstance(Instance):
87
136
 
88
137
  if _data is None:
89
138
  return None
139
+
140
+ item = self.get_item(_data['id'])
90
141
 
91
- sale = Sale(NSID(id))
142
+ sale = Sale(NSID(id), Item(_data['id']) if item is None else item)
92
143
  sale.__dict__ = _data
93
144
 
94
145
  return sale
@@ -147,8 +198,7 @@ class EconomyInstance(Instance):
147
198
  inventory = Inventory(id)
148
199
 
149
200
  for _item in _data['objects']:
150
- item = Item(_item['id'])
151
- item.__dict__ = _item
201
+ item = self.get_item(_item)
152
202
 
153
203
  inventory.objects.append(item)
154
204
 
@@ -163,10 +213,7 @@ class EconomyInstance(Instance):
163
213
  Inventaire à sauvegarder
164
214
  """
165
215
 
166
- _data = {
167
- "owner_id": inventory.owner_id,
168
- "objects": [ object.__dict__ for object in inventory.objects ]
169
- }
216
+ _data = inventory.__dict__
170
217
 
171
218
  self._put_in_db('inventories', _data)
172
219
 
@@ -72,7 +72,7 @@ class EntityInstance(Instance):
72
72
  _member_profile = self.get_entity(member.id)
73
73
 
74
74
  member.set_name(_member_profile.name)
75
- member.legalPosition = _member_profile.legalPosition
75
+ member.position = _member_profile.position
76
76
  member.registerDate = _member_profile.registerDate
77
77
 
78
78
  member.xp = _member_profile.xp
@@ -89,7 +89,7 @@ class EntityInstance(Instance):
89
89
  entity = Entity(id)
90
90
 
91
91
  entity.name = _data['name']
92
- entity.legalPosition = _data['position'] # Métier si c'est un utilisateur, domaine professionnel si c'est un collectif
92
+ entity.position = _data['position'] # Métier si c'est un utilisateur, domaine professionnel si c'est un collectif
93
93
  entity.registerDate = _data['register_date']
94
94
 
95
95
  for key, value in _data.get('additional', {}).items():
@@ -114,7 +114,7 @@ class EntityInstance(Instance):
114
114
  _data = {
115
115
  'id': entity.id,
116
116
  'name': entity.name,
117
- 'position': entity.legalPosition,
117
+ 'position': entity.position,
118
118
  'register_date': entity.registerDate,
119
119
  'additional': {},
120
120
  }
@@ -26,7 +26,7 @@ class RepublicInstance(Instance):
26
26
  ---- VOTES & REFERENDUMS ----
27
27
  """
28
28
 
29
- def get_vote(self, id: str | NSID) -> Vote | ClosedVote | Lawsuit:
29
+ def get_vote(self, id: str | NSID) -> Vote | Referendum | Lawsuit:
30
30
  """
31
31
  Récupère un vote spécifique.
32
32
 
@@ -44,10 +44,10 @@ class RepublicInstance(Instance):
44
44
  if _data is None:
45
45
  return None
46
46
 
47
- if _data['_type'] == 'open':
47
+ if _data['_type'] == 'vote':
48
48
  vote = Vote(id, _data['title'], tuple(_data['choices'].keys()))
49
- elif _data['_type'] == 'closed':
50
- vote = ClosedVote(id, _data['title'])
49
+ elif _data['_type'] == 'referendum':
50
+ vote = Referendum(id, _data['title'])
51
51
  elif _data['_type'] == 'lawsuit':
52
52
  vote = Lawsuit(id, _data['title'])
53
53
  else:
@@ -60,14 +60,14 @@ class RepublicInstance(Instance):
60
60
 
61
61
  return vote
62
62
 
63
- def save_vote(self, vote: Vote | ClosedVote) -> None:
63
+ def save_vote(self, vote: Vote | Referendum) -> None:
64
64
  """Sauvegarde un vote dans la base de données."""
65
65
 
66
66
  vote.id = NSID(vote.id)
67
67
 
68
68
  _data = {
69
- '_type':'open' if type(vote) == Vote else\
70
- 'closed' if type(vote) == ClosedVote else\
69
+ '_type':'vote' if type(vote) == Vote else\
70
+ 'referendum' if type(vote) == Referendum else\
71
71
  'lawsuit' if type(vote) == Lawsuit else\
72
72
  'unknown',
73
73
  'title': vote.title,
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "nsarchive"
3
- version = "2.0.0-alpha.4"
3
+ version = "2.0.0-alpha.5"
4
4
  description = "API-wrapper pour récupérer des données liées à Nation"
5
5
  authors = ["happex <110610727+okayhappex@users.noreply.github.com>"]
6
6
  license = "GPL-3.0"
File without changes
File without changes