-
Notifications
You must be signed in to change notification settings - Fork 447
Expand file tree
/
Copy pathlocation_item.py
More file actions
53 lines (41 loc) · 1.26 KB
/
location_item.py
File metadata and controls
53 lines (41 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from typing import Optional
import xml.etree.ElementTree as ET
class LocationItem:
"""
Details of where an item is located, such as a personal space or project.
Attributes
----------
id : str | None
The ID of the location.
type : str | None
The type of location, such as PersonalSpace or Project.
name : str | None
The name of the location.
"""
class Type:
PersonalSpace = "PersonalSpace"
Project = "Project"
def __init__(self):
self._id: Optional[str] = None
self._type: Optional[str] = None
self._name: Optional[str] = None
def __repr__(self):
return f"{self.__class__.__name__}({self.__dict__!r})"
@property
def id(self) -> Optional[str]:
return self._id
@property
def type(self) -> Optional[str]:
return self._type
@property
def name(self) -> Optional[str]:
return self._name
@classmethod
def from_xml(cls, xml: ET.Element, ns: Optional[dict] = None) -> "LocationItem":
if ns is None:
ns = {}
location = cls()
location._id = xml.get("id", None)
location._type = xml.get("type", None)
location._name = xml.get("name", None)
return location