frist commit
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
from flask import Blueprint, request, jsonify
|
||||
import models
|
||||
|
||||
api_bp = Blueprint('api', __name__, url_prefix='/api')
|
||||
|
||||
|
||||
@api_bp.route('/anuncios', methods=['GET'])
|
||||
def api_listar():
|
||||
categoria = request.args.get('categoria', '').strip() or None
|
||||
busqueda = request.args.get('q', '').strip() or None
|
||||
ciudad = request.args.get('ciudad', '').strip() or None
|
||||
anuncios = models.listar_anuncios(categoria=categoria, busqueda=busqueda, ciudad=ciudad)
|
||||
return jsonify(anuncios)
|
||||
|
||||
|
||||
@api_bp.route('/anuncios/<int:anuncio_id>', methods=['GET'])
|
||||
def api_ver(anuncio_id):
|
||||
anuncio = models.obtener_anuncio(anuncio_id)
|
||||
if not anuncio:
|
||||
return jsonify({'error': 'Anuncio no encontrado'}), 404
|
||||
return jsonify(anuncio)
|
||||
|
||||
|
||||
@api_bp.route('/anuncios', methods=['POST'])
|
||||
def api_crear():
|
||||
data = request.get_json(force=True, silent=True) or request.form
|
||||
titulo = (data.get('titulo') or '').strip()
|
||||
contenido = (data.get('contenido') or '').strip()
|
||||
categoria = (data.get('categoria') or 'general').strip()
|
||||
contacto = (data.get('contacto') or 'madrid@craigslist.local').strip()
|
||||
ciudad = (data.get('ciudad') or 'madrid').strip()
|
||||
|
||||
if not titulo or not contenido:
|
||||
return jsonify({'error': 'Titulo y contenido son obligatorios'}), 400
|
||||
|
||||
anuncio_id, token = models.crear_anuncio(titulo, contenido, categoria, contacto, ciudad)
|
||||
return jsonify({'id': anuncio_id, 'token': token, 'message': 'Anuncio creado'}), 201
|
||||
|
||||
|
||||
@api_bp.route('/anuncios/<int:anuncio_id>', methods=['DELETE'])
|
||||
def api_borrar(anuncio_id):
|
||||
data = request.get_json(force=True, silent=True) or request.form
|
||||
token = (data.get('token') or '').strip()
|
||||
if models.borrar_anuncio(anuncio_id, token):
|
||||
return jsonify({'message': 'Anuncio borrado'}), 200
|
||||
return jsonify({'error': 'Anuncio no encontrado o token incorrecto'}), 404
|
||||
|
||||
|
||||
@api_bp.route('/anuncios/<int:anuncio_id>', methods=['PUT'])
|
||||
def api_actualizar(anuncio_id):
|
||||
data = request.get_json(force=True, silent=True) or request.form
|
||||
campos = {}
|
||||
for k in ('titulo', 'contenido', 'categoria', 'contacto', 'ciudad'):
|
||||
if k in data:
|
||||
campos[k] = data[k]
|
||||
if not campos:
|
||||
return jsonify({'error': 'No hay campos para actualizar'}), 400
|
||||
if models.actualizar_anuncio(anuncio_id, **campos):
|
||||
return jsonify({'message': 'Anuncio actualizado'})
|
||||
return jsonify({'error': 'Anuncio no encontrado'}), 404
|
||||
|
||||
|
||||
@api_bp.route('/categorias', methods=['GET'])
|
||||
def api_categorias():
|
||||
ciudad = request.args.get('ciudad', '').strip() or None
|
||||
return jsonify(models.listar_categorias(ciudad=ciudad))
|
||||
Reference in New Issue
Block a user