@@ -35,7 +35,7 @@ def get_foods():
35
35
foods = Food .query .all ()
36
36
if not foods :
37
37
return "food not found" , 404
38
- else :
38
+ else :
39
39
return jsonify ([food .serialize () for food in foods ]), 200
40
40
41
41
@@ -47,7 +47,7 @@ def get_food(food_id):
47
47
return jsonify ({"error" : "Food not found" }), 404
48
48
return jsonify (food .serialize ()), 200
49
49
50
-
50
+ #obtener todos los usuarios
51
51
@api .route ('/users' , methods = ['GET' ])
52
52
def get_users ():
53
53
users = User .query .all ()
@@ -68,7 +68,7 @@ def get_user(user_id):
68
68
@api .route ('/pets' , methods = ['GET' ])
69
69
def get_pets ():
70
70
pets = Pet .query .all ()
71
- if not pets :
71
+ if not pets :
72
72
return "no pets found" , 404
73
73
return jsonify ([pet .serialize () for pet in pets ]), 200
74
74
@@ -85,11 +85,11 @@ def get_pet(pet_id):
85
85
@api .route ('/foods/suggestions/<int:pet_id>' , methods = ['GET' ])
86
86
def get_pet_suggestions (pet_id ):
87
87
pet = Pet .query .get (pet_id ).serialize ()
88
- # Problema: Un animal puede tener varias patologias en su campo, habría que coger este campo y tratarlo,
89
- # separar las patologias en una lista y hacer la query para cada patologia.
88
+ # Problema: Un animal puede tener varias patologias en su campo, habría que coger este campo y tratarlo,
89
+ # separar las patologias en una lista y hacer la query para cada patologia.
90
90
# Solucion simple: limitar a 1 patologia cada animal por ahora
91
91
#if para pet# anymal_type == perro, animal size #si no no hace falta size
92
- if pet ["animal_type" ] == "perro" :
92
+ if pet ["animal_type" ] == "perro" :
93
93
food_suggestions = db .session .execute (select (Food ).where (and_ (Food .animal_type == pet ["animal_type" ]),
94
94
Food .size == pet ["size" ],
95
95
Food .age == pet ["age" ],
@@ -99,38 +99,38 @@ def get_pet_suggestions(pet_id):
99
99
Food .age == pet ["age" ],
100
100
Food .pathologies == pet ["pathologies" ]).all ()
101
101
if not food_suggestions :
102
- return "no suggestions found" , 404
102
+ return "no suggestions found" , 404
103
103
return [food [0 ].serialize () for food in food_suggestions ], 200
104
104
105
105
106
106
#obtener todos los alimentos según tipo de animal
107
107
@api .route ('/foods/cat' , methods = ['GET' ])
108
108
def get_all_cat_food ():
109
109
food_cat = db .session .query (Food ).filter (Food .animal_type .ilike ("%gato%" )).all ()
110
-
111
- print ("Datos obtenidos:" , food_cat )
112
-
110
+
111
+ print ("Datos obtenidos:" , food_cat )
112
+
113
113
if not food_cat :
114
- return jsonify ({"error" : "No cat food found" }), 404
115
-
114
+ return jsonify ({"error" : "No cat food found" }), 404
115
+
116
116
print ("Datos obtenidos:" , food_cat )
117
117
if not food_cat :
118
118
return jsonify ({"error" : "No cat food found" }), 404
119
119
120
120
return jsonify ([food .serialize () for food in food_cat ]), 200
121
-
121
+
122
122
123
123
124
124
@api .route ('/foods/dog' , methods = ['GET' ])
125
125
def get_all_dog_food ():
126
126
food_dog = db .session .query (Food ).filter (Food .animal_type .ilike ("%perro%" )).all ()
127
127
128
-
129
- print ("Datos obtenidos:" , food_dog )
130
-
128
+
129
+ print ("Datos obtenidos:" , food_dog )
130
+
131
131
if not food_dog :
132
- return jsonify ({"error" : "No dog food found" }), 404
133
-
132
+ return jsonify ({"error" : "No dog food found" }), 404
133
+
134
134
135
135
print ("Datos obtenidos:" , food_dog )
136
136
if not food_dog :
@@ -142,12 +142,12 @@ def get_all_dog_food():
142
142
def get_all_exotic_food ():
143
143
food_exotic = db .session .query (Food ).filter (Food .animal_type .ilike ("%exótico%" )).all ()
144
144
145
-
146
- print ("Datos obtenidos:" , food_exotic )
147
-
145
+
146
+ print ("Datos obtenidos:" , food_exotic )
147
+
148
148
if not food_exotic :
149
- return jsonify ({"error" : "No exotic food found" }), 404
150
-
149
+ return jsonify ({"error" : "No exotic food found" }), 404
150
+
151
151
152
152
print ("Datos obtenidos:" , food_exotic )
153
153
if not food_exotic :
@@ -160,7 +160,7 @@ def get_all_exotic_food():
160
160
def get_accessories ():
161
161
accessories = Accessories .query .all ()
162
162
if not accessories :
163
- return "no accessories found" , 404
163
+ return "no accessories found" , 404
164
164
return jsonify ([accessory .serialize () for accessory in accessories ]), 200
165
165
166
166
@@ -192,34 +192,76 @@ def create_food():
192
192
db .session .commit ()
193
193
return jsonify (new_food .serialize ()), 201
194
194
195
- #registrar nuevo usuario
196
- @api .route ('/users' , methods = ['POST' ])
195
+
196
+ #registrar nuevo usuario(signup)
197
+ @api .route ('/signup' , methods = ['POST' ])
197
198
def create_user ():
198
199
data = request .get_json ()
199
200
new_user = User (
200
201
name = data ["name" ],
201
202
email = data ["email" ],
202
- password = data ["password" ],
203
- is_active = data ["is_active" ]
203
+ password = data ["password" ]
204
204
)
205
205
if User .query .filter_by (email = data ["email" ]).first ():
206
206
return jsonify ({"msg" : "El usuario ya existe" }), 400
207
-
207
+
208
208
db .session .add (new_user )
209
209
db .session .commit ()
210
210
return jsonify (new_user .serialize ()), 201
211
211
212
- # iniciar sesion
213
- @api .route ('loging/user' , methods = ['POST' ])
214
- def logging_user ():
215
- data = request .get_json ()
216
- user = User .query .filter_by (email = data ["email" ]).first ()
212
+ # iniciar sesion(login)
213
+ # @api.route('/login', methods=['POST'])
214
+ # def logging_user():
215
+ # data = request.get_json()
216
+ # user = User.query.filter_by(email=data["email"]).first()
217
+
218
+
219
+ # if User.query.filter_by(email=data["email"]).first() and User.query.filter_by(password=data["password"]).first():
220
+ # access_token=create_access_token(identity=user.email)
221
+ # return jsonify(access_token=access_token), 200
217
222
223
+ # return jsonify ({"nsg":"credenciales invalidas"}), 400
224
+
225
+ @api .route ('/login' , methods = ['POST' ])
226
+ def login_user ():
218
227
219
- if User .query .filter_by (email = data ["email" ]).first () and User .query .filter_by (password = data ["password" ]).first ():
220
- access_token = create_access_token (identity = user .email )
221
- return jsonify (access_token = access_token ), 200
222
- return jsonify ({"nsg" :"credenciales invalidas" }), 400
228
+ body = request .get_json ()
229
+
230
+ if not body or "email" not in body or "password" not in body :
231
+ return jsonify ({"msg" : "credenciales no validas" }), 400
232
+
233
+ email = body ["email" ]
234
+ password = body ["password" ]
235
+
236
+ user = User ().query .filter_by (email = email , password = password ).first ()
237
+ token = create_access_token (identity = user .email )
238
+ user_data = {
239
+ "id" : user .id ,
240
+ "email" : user .email ,
241
+ "name" : user .name
242
+ }
243
+
244
+ return jsonify ({"msg" : "inicio de sesion exitoso" , "token" : token , "user" : user_data }), 200
245
+
246
+ #Vista privada del usuario CON el token
247
+ @api .route ('/user' , methods = ['GET' ])
248
+ @jwt_required ()
249
+ def get_user_info ():
250
+
251
+ current_user_email = get_jwt_identity ()
252
+
253
+ user = User ().query .filter_by (email = current_user_email ).first ()
254
+
255
+ if not user :
256
+ return jsonify ({"msg" : "usuario no encontrado" }), 400
257
+
258
+ user_data = {
259
+ "id" : user .id ,
260
+ "email" : user .email ,
261
+ "name" : user .name
262
+ }
263
+
264
+ return jsonify (user_data ), 200
223
265
224
266
225
267
#crear un nuevo accesorio
@@ -251,8 +293,8 @@ def create_pet():
251
293
animal_type = data ["animal_type" ],
252
294
pathologies = data ["pathologies" ],
253
295
user_id = data ["user_id" ],
254
-
255
-
296
+
297
+
256
298
)
257
299
db .session .add (new_accessory )
258
300
db .session .commit ()
@@ -265,7 +307,7 @@ def create_pet():
265
307
# return jsonify({"message": "Food not found"}), 404
266
308
267
309
# data = request.get_json()
268
-
310
+
269
311
# food.name = data.get("name", food.name)
270
312
# food.brand = data.get("brand", food.brand)
271
313
# food.description = data.get("description", food.description)
@@ -288,7 +330,7 @@ def create_pet():
288
330
# "animal_type": food.animal_type,
289
331
# "price": food.price,
290
332
# "weight": food.weight,
291
- # "size" : food.size,
333
+ # "size" : food.size,
292
334
# "pathologies": food.pathologies,
293
335
# "url": food.url
294
336
# })
0 commit comments