@@ -35,7 +35,7 @@ def get_foods():
3535 foods = Food .query .all ()
3636 if not foods :
3737 return "food not found" , 404
38- else :
38+ else :
3939 return jsonify ([food .serialize () for food in foods ]), 200
4040
4141
@@ -47,7 +47,7 @@ def get_food(food_id):
4747 return jsonify ({"error" : "Food not found" }), 404
4848 return jsonify (food .serialize ()), 200
4949
50-
50+ #obtener todos los usuarios
5151@api .route ('/users' , methods = ['GET' ])
5252def get_users ():
5353 users = User .query .all ()
@@ -68,7 +68,7 @@ def get_user(user_id):
6868@api .route ('/pets' , methods = ['GET' ])
6969def get_pets ():
7070 pets = Pet .query .all ()
71- if not pets :
71+ if not pets :
7272 return "no pets found" , 404
7373 return jsonify ([pet .serialize () for pet in pets ]), 200
7474
@@ -85,11 +85,11 @@ def get_pet(pet_id):
8585@api .route ('/foods/suggestions/<int:pet_id>' , methods = ['GET' ])
8686def get_pet_suggestions (pet_id ):
8787 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.
9090 # Solucion simple: limitar a 1 patologia cada animal por ahora
9191 #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" :
9393 food_suggestions = db .session .execute (select (Food ).where (and_ (Food .animal_type == pet ["animal_type" ]),
9494 Food .size == pet ["size" ],
9595 Food .age == pet ["age" ],
@@ -99,38 +99,38 @@ def get_pet_suggestions(pet_id):
9999 Food .age == pet ["age" ],
100100 Food .pathologies == pet ["pathologies" ]).all ()
101101 if not food_suggestions :
102- return "no suggestions found" , 404
102+ return "no suggestions found" , 404
103103 return [food [0 ].serialize () for food in food_suggestions ], 200
104104
105105
106106#obtener todos los alimentos según tipo de animal
107107@api .route ('/foods/cat' , methods = ['GET' ])
108108def get_all_cat_food ():
109109 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+
113113 if not food_cat :
114- return jsonify ({"error" : "No cat food found" }), 404
115-
114+ return jsonify ({"error" : "No cat food found" }), 404
115+
116116 print ("Datos obtenidos:" , food_cat )
117117 if not food_cat :
118118 return jsonify ({"error" : "No cat food found" }), 404
119119
120120 return jsonify ([food .serialize () for food in food_cat ]), 200
121-
121+
122122
123123
124124@api .route ('/foods/dog' , methods = ['GET' ])
125125def get_all_dog_food ():
126126 food_dog = db .session .query (Food ).filter (Food .animal_type .ilike ("%perro%" )).all ()
127127
128-
129- print ("Datos obtenidos:" , food_dog )
130-
128+
129+ print ("Datos obtenidos:" , food_dog )
130+
131131 if not food_dog :
132- return jsonify ({"error" : "No dog food found" }), 404
133-
132+ return jsonify ({"error" : "No dog food found" }), 404
133+
134134
135135 print ("Datos obtenidos:" , food_dog )
136136 if not food_dog :
@@ -142,12 +142,12 @@ def get_all_dog_food():
142142def get_all_exotic_food ():
143143 food_exotic = db .session .query (Food ).filter (Food .animal_type .ilike ("%exótico%" )).all ()
144144
145-
146- print ("Datos obtenidos:" , food_exotic )
147-
145+
146+ print ("Datos obtenidos:" , food_exotic )
147+
148148 if not food_exotic :
149- return jsonify ({"error" : "No exotic food found" }), 404
150-
149+ return jsonify ({"error" : "No exotic food found" }), 404
150+
151151
152152 print ("Datos obtenidos:" , food_exotic )
153153 if not food_exotic :
@@ -160,7 +160,7 @@ def get_all_exotic_food():
160160def get_accessories ():
161161 accessories = Accessories .query .all ()
162162 if not accessories :
163- return "no accessories found" , 404
163+ return "no accessories found" , 404
164164 return jsonify ([accessory .serialize () for accessory in accessories ]), 200
165165
166166
@@ -192,34 +192,76 @@ def create_food():
192192 db .session .commit ()
193193 return jsonify (new_food .serialize ()), 201
194194
195- #registrar nuevo usuario
196- @api .route ('/users' , methods = ['POST' ])
195+
196+ #registrar nuevo usuario(signup)
197+ @api .route ('/signup' , methods = ['POST' ])
197198def create_user ():
198199 data = request .get_json ()
199200 new_user = User (
200201 name = data ["name" ],
201202 email = data ["email" ],
202- password = data ["password" ],
203- is_active = data ["is_active" ]
203+ password = data ["password" ]
204204)
205205 if User .query .filter_by (email = data ["email" ]).first ():
206206 return jsonify ({"msg" : "El usuario ya existe" }), 400
207-
207+
208208 db .session .add (new_user )
209209 db .session .commit ()
210210 return jsonify (new_user .serialize ()), 201
211211
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
217222
223+ # return jsonify ({"nsg":"credenciales invalidas"}), 400
224+
225+ @api .route ('/login' , methods = ['POST' ])
226+ def login_user ():
218227
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
223265
224266
225267#crear un nuevo accesorio
@@ -251,8 +293,8 @@ def create_pet():
251293 animal_type = data ["animal_type" ],
252294 pathologies = data ["pathologies" ],
253295 user_id = data ["user_id" ],
254-
255-
296+
297+
256298)
257299 db .session .add (new_accessory )
258300 db .session .commit ()
@@ -265,7 +307,7 @@ def create_pet():
265307# return jsonify({"message": "Food not found"}), 404
266308
267309# data = request.get_json()
268-
310+
269311# food.name = data.get("name", food.name)
270312# food.brand = data.get("brand", food.brand)
271313# food.description = data.get("description", food.description)
@@ -288,7 +330,7 @@ def create_pet():
288330# "animal_type": food.animal_type,
289331# "price": food.price,
290332# "weight": food.weight,
291- # "size" : food.size,
333+ # "size" : food.size,
292334# "pathologies": food.pathologies,
293335# "url": food.url
294336# })
0 commit comments