4
4
from flask_restful import Resource , reqparse
5
5
6
6
from sqlalchemy .exc import IntegrityError
7
+ from sqlalchemy .orm .exc import UnmappedInstanceError
7
8
8
9
from projeto .ext .db import db
9
10
10
11
from .models import Estacao , Sensor , Leitura
11
12
13
+ HTTP_RESPONSE_CREATED = 201
14
+ HTTP_RESPONSE_NOT_FOUND = 404
15
+
12
16
13
17
class ApiEstacao (Resource ):
14
18
def get (self ):
@@ -42,7 +46,7 @@ def post(self):
42
46
43
47
db .session .add (estacao )
44
48
db .session .commit ()
45
- return {"created" : estacao .json ()}
49
+ return {"created" : estacao .json ()}, HTTP_RESPONSE_CREATED
46
50
47
51
48
52
class ApiEstacaoId (Resource ):
@@ -52,7 +56,7 @@ def get(self, estacao_id):
52
56
return {"resource" : estacao .json ()}
53
57
54
58
except AttributeError :
55
- return {"error" : "Recurso inexistente!" }
59
+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
56
60
57
61
# @jwt_required()
58
62
def put (self , estacao_id ):
@@ -77,7 +81,7 @@ def put(self, estacao_id):
77
81
return {"updated" : estacao .json ()}
78
82
79
83
except (AttributeError , IntegrityError ):
80
- return {"error" : "Recurso inexistente!" }
84
+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
81
85
82
86
# @jwt_required()
83
87
def delete (self , estacao_id ):
@@ -87,8 +91,8 @@ def delete(self, estacao_id):
87
91
db .session .commit ()
88
92
return {"deleted" : estacao .json ()}
89
93
90
- except IntegrityError :
91
- return {"error" : "Recurso inexistente!" }
94
+ except ( IntegrityError , UnmappedInstanceError ) :
95
+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
92
96
93
97
94
98
class ApiEstacaoIdSensor (Resource ):
@@ -100,7 +104,7 @@ def get(self, estacao_id):
100
104
return {"resources" : data }
101
105
102
106
except AttributeError :
103
- return {"error" : "Recurso inexistente!" }
107
+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
104
108
105
109
# @jwt_required()
106
110
def post (self , estacao_id ):
@@ -129,10 +133,10 @@ def post(self, estacao_id):
129
133
db .session .add (sensor )
130
134
db .session .commit ()
131
135
132
- return {"created" : sensor .json ()}
136
+ return {"created" : sensor .json ()}, HTTP_RESPONSE_CREATED
133
137
134
138
except IntegrityError :
135
- return {"error" : "Recurso inexistente!" }
139
+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
136
140
137
141
138
142
class ApiSensorId (Resource ):
@@ -142,7 +146,7 @@ def get(self, sensor_id):
142
146
return {"resource" : sensor .json ()}
143
147
144
148
except AttributeError :
145
- return {"error" : "Recurso inexistente!" }
149
+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
146
150
147
151
# @jwt_required()
148
152
def put (self , sensor_id ):
@@ -168,7 +172,7 @@ def put(self, sensor_id):
168
172
return {"updated" : sensor .json ()}
169
173
170
174
except (AttributeError , IntegrityError ):
171
- return {"error" : "Recurso inexistente!" }
175
+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
172
176
173
177
# @jwt_required()
174
178
def delete (self , sensor_id ):
@@ -178,8 +182,8 @@ def delete(self, sensor_id):
178
182
db .session .commit ()
179
183
return {"deleted" : sensor .json ()}
180
184
181
- except IntegrityError :
182
- return {"error" : "Recurso inexistente!" }
185
+ except ( IntegrityError , UnmappedInstanceError ) :
186
+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
183
187
184
188
185
189
class ApiSensorIdParam (Resource ):
@@ -193,7 +197,7 @@ def get(self, sensor_id, param):
193
197
return {"resource" : leituras }
194
198
195
199
except AttributeError :
196
- return {"error" : "Recurso inexistente!" }
200
+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
197
201
198
202
# @jwt_required()
199
203
def post (self , sensor_id , param ):
@@ -219,10 +223,10 @@ def post(self, sensor_id, param):
219
223
220
224
db .session .add (leitura )
221
225
db .session .commit ()
222
- return {"created" : leitura .json ()}
226
+ return {"created" : leitura .json ()}, HTTP_RESPONSE_CREATED
223
227
224
228
except IntegrityError :
225
- return {"error" : "Recurso inexistente!" }
229
+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
226
230
227
231
228
232
class ApiSensorIdParamLast (Resource ):
@@ -239,4 +243,4 @@ def get(self, sensor_id, param, qty):
239
243
return {"resources" : []}
240
244
241
245
except AttributeError :
242
- return {"error" : "Recurso inexistente!" }
246
+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
0 commit comments