44from flask_restful import Resource , reqparse
55
66from sqlalchemy .exc import IntegrityError
7+ from sqlalchemy .orm .exc import UnmappedInstanceError
78
89from projeto .ext .db import db
910
1011from .models import Estacao , Sensor , Leitura
1112
13+ HTTP_RESPONSE_CREATED = 201
14+ HTTP_RESPONSE_NOT_FOUND = 404
15+
1216
1317class ApiEstacao (Resource ):
1418 def get (self ):
@@ -42,7 +46,7 @@ def post(self):
4246
4347 db .session .add (estacao )
4448 db .session .commit ()
45- return {"created" : estacao .json ()}
49+ return {"created" : estacao .json ()}, HTTP_RESPONSE_CREATED
4650
4751
4852class ApiEstacaoId (Resource ):
@@ -52,7 +56,7 @@ def get(self, estacao_id):
5256 return {"resource" : estacao .json ()}
5357
5458 except AttributeError :
55- return {"error" : "Recurso inexistente!" }
59+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
5660
5761 # @jwt_required()
5862 def put (self , estacao_id ):
@@ -77,7 +81,7 @@ def put(self, estacao_id):
7781 return {"updated" : estacao .json ()}
7882
7983 except (AttributeError , IntegrityError ):
80- return {"error" : "Recurso inexistente!" }
84+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
8185
8286 # @jwt_required()
8387 def delete (self , estacao_id ):
@@ -87,8 +91,8 @@ def delete(self, estacao_id):
8791 db .session .commit ()
8892 return {"deleted" : estacao .json ()}
8993
90- except IntegrityError :
91- return {"error" : "Recurso inexistente!" }
94+ except ( IntegrityError , UnmappedInstanceError ) :
95+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
9296
9397
9498class ApiEstacaoIdSensor (Resource ):
@@ -100,7 +104,7 @@ def get(self, estacao_id):
100104 return {"resources" : data }
101105
102106 except AttributeError :
103- return {"error" : "Recurso inexistente!" }
107+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
104108
105109 # @jwt_required()
106110 def post (self , estacao_id ):
@@ -129,10 +133,10 @@ def post(self, estacao_id):
129133 db .session .add (sensor )
130134 db .session .commit ()
131135
132- return {"created" : sensor .json ()}
136+ return {"created" : sensor .json ()}, HTTP_RESPONSE_CREATED
133137
134138 except IntegrityError :
135- return {"error" : "Recurso inexistente!" }
139+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
136140
137141
138142class ApiSensorId (Resource ):
@@ -142,7 +146,7 @@ def get(self, sensor_id):
142146 return {"resource" : sensor .json ()}
143147
144148 except AttributeError :
145- return {"error" : "Recurso inexistente!" }
149+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
146150
147151 # @jwt_required()
148152 def put (self , sensor_id ):
@@ -168,7 +172,7 @@ def put(self, sensor_id):
168172 return {"updated" : sensor .json ()}
169173
170174 except (AttributeError , IntegrityError ):
171- return {"error" : "Recurso inexistente!" }
175+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
172176
173177 # @jwt_required()
174178 def delete (self , sensor_id ):
@@ -178,8 +182,8 @@ def delete(self, sensor_id):
178182 db .session .commit ()
179183 return {"deleted" : sensor .json ()}
180184
181- except IntegrityError :
182- return {"error" : "Recurso inexistente!" }
185+ except ( IntegrityError , UnmappedInstanceError ) :
186+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
183187
184188
185189class ApiSensorIdParam (Resource ):
@@ -193,7 +197,7 @@ def get(self, sensor_id, param):
193197 return {"resource" : leituras }
194198
195199 except AttributeError :
196- return {"error" : "Recurso inexistente!" }
200+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
197201
198202 # @jwt_required()
199203 def post (self , sensor_id , param ):
@@ -219,10 +223,10 @@ def post(self, sensor_id, param):
219223
220224 db .session .add (leitura )
221225 db .session .commit ()
222- return {"created" : leitura .json ()}
226+ return {"created" : leitura .json ()}, HTTP_RESPONSE_CREATED
223227
224228 except IntegrityError :
225- return {"error" : "Recurso inexistente!" }
229+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
226230
227231
228232class ApiSensorIdParamLast (Resource ):
@@ -239,4 +243,4 @@ def get(self, sensor_id, param, qty):
239243 return {"resources" : []}
240244
241245 except AttributeError :
242- return {"error" : "Recurso inexistente!" }
246+ return {"error" : "Recurso inexistente!" }, HTTP_RESPONSE_NOT_FOUND
0 commit comments