Преглед на файлове

Add new name fields to client

Maarten van den Berg преди 5 години
родител
ревизия
9405cec96a
променени са 1 файла, в които са добавени 11 реда и са изтрити 5 реда
  1. 11 5
      piket_client/model.py

+ 11 - 5
piket_client/model.py

@@ -3,7 +3,7 @@ Provides access to the models stored in the database, via the server.
3 3
 """
4 4
 import datetime
5 5
 import logging
6
-from typing import NamedTuple, Sequence
6
+from typing import NamedTuple, Sequence, Tuple, Any, Optional
7 7
 from urllib.parse import urljoin
8 8
 
9 9
 import requests
@@ -19,7 +19,7 @@ class ServerStatus:
19 19
     """ Provides helper classes to check whether the server is up. """
20 20
 
21 21
     @classmethod
22
-    def is_server_running(cls) -> bool:
22
+    def is_server_running(cls) -> Tuple[bool, Any]:
23 23
         try:
24 24
             req = requests.get(urljoin(SERVER_URL, "ping"))
25 25
 
@@ -50,11 +50,16 @@ class ServerStatus:
50 50
 class Person(NamedTuple):
51 51
     """ Represents a Person, as retrieved from the database. """
52 52
 
53
-    name: str
53
+    full_name: str
54
+    display_name: Optional[str]
54 55
     active: bool = True
55
-    person_id: int = None
56
+    person_id: Optional[int] = None
56 57
     consumptions: dict = {}
57 58
 
59
+    @property
60
+    def name(self) -> str:
61
+        return self.display_name or self.full_name
62
+
58 63
     def add_consumption(self, type_id: str) -> bool:
59 64
         """ Register a consumption for this Person. """
60 65
         req = requests.post(
@@ -182,7 +187,8 @@ class Person(NamedTuple):
182 187
     def from_dict(cls, data: dict) -> "Person":
183 188
         """ Reconstruct a Person object from a dict. """
184 189
         return Person(
185
-            name=data["name"],
190
+            full_name=data["full_name"],
191
+            display_name=data["display_name"],
186 192
             active=data["active"],
187 193
             person_id=data["person_id"],
188 194
             consumptions=data["consumptions"],