Repository navigation
Expand file tree
/
Copy pathmodel.py
More file actions
138 lines (121 loc) · 3.84 KB
/
Copy pathmodel.py
File metadata and controls
138 lines (121 loc) · 3.84 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# Hierarchical data representation
#
# - gateway
# + network
# + device
# + status
# + service
# + value
# + configuration
# + partner
# + action
# + calendar
# + calculation
# + timer
# + statemachine
# JsonRPC representation
#
# Example:
# {"id":"1234565","jsonrpc":"2.0", "method":"POST","params":{"data":{....},"url":"/network/91f8b08a-a661-4997-973b-fd118a86d7d4/device"}}
#
# Base class - contains data, url from jsonrpc represenation and parent
class Item:
def __init__(self, data, url, parent):
self.data = data
self.id = data[":id"]
self.parent = parent
self.url = url
@property
def id(self):
return self.id
@property
def url(self):
return self.url
@property
def data(self):
return self.data
@data.setter
def data(self, data):
self.data = data
@property
def parent(self):
return self.parent
def __str__(self):
return " url: " + self.url + "/" + self.id
# Model ------------------
class Gateway(Item):
def __init__(self, data, url, parent):
Item.__init__(self, data, url, parent)
self.time_zone = data["time_zone"]
def __str__(self):
return "Gateway time_zone: '" + self.time_zone + "' " + Item.__str__(self)
class Network(Item):
def __init__(self, data, url, parent):
Item.__init__(self, data, url, parent)
self.name = data["name"]
def __str__(self):
return "Network name: '" + self.name + "' " + Item.__str__(self)
class Device(Item):
def __init__(self, data, url, parent):
Item.__init__(self, data, url, parent)
self.name = data["name"]
def __str__(self):
return "Device name: '" + self.name + "' " + Item.__str__(self)
class Service(Item):
def __init__(self, data, url, parent):
Item.__init__(self, data, url, parent)
self.name = data["name"]
@property
def name(self):
return self.name
def __str__(self):
return "Service name: '" + self.name + "' " + Item.__str__(self)
class Value(Item):
def __init__(self, data, url, parent):
Item.__init__(self, data, url, parent)
self.data = data["data"]
def __str__(self):
return "Value data: " + self.data + Item.__str__(self)
class Configuration(Item):
def __init__(self, data, url, parent):
Item.__init__(self, data, url, parent)
self.status = data["status"]
@property
def status(self):
return self.status
def __str__(self):
return "Configuration status: " + self.status + Item.__str__(self)
class Partner(Item):
def __init__(self, data, url, parent):
Item.__init__(self, data, url, parent)
self.partner = data["device_id"]
@property
def partner(self):
return self.partner
def __str__(self):
return "Partner device: " + self.parent + Item.__str__(self)
class Action(Item):
def __init__(self, data, url, parent):
Item.__init__(self, data, url, parent)
def __str__(self):
return "Action " + Item.__str__(self)
class Calendar(Item):
def __init__(self, data, url, parent):
Item.__init__(self, data, url, parent)
def __str__(self):
return "Calendar " + Item.__str__(self)
class Calculation(Item):
def __init__(self, data, url, parent):
Item.__init__(self, data, url, parent)
def __str__(self):
return "Calculation " + Item.__str__(self)
class Timer(Item):
def __init__(self, data, url, parent):
Item.__init__(self, data, url, parent)
def __str__(self):
return "Timer " + Item.__str__(self)
class StateMachine(Item):
def __init__(self, data, url, parent):
Item.__init__(self, data, url, parent)
def __str__(self):
return "StateMachine " + Item.__str__(self)