63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
from flask import Flask, render_template, request, redirect, url_for
|
|
import models
|
|
from api import api_bp
|
|
|
|
app = Flask(__name__)
|
|
app.register_blueprint(api_bp)
|
|
|
|
models.init_db()
|
|
|
|
CIUDADES = [
|
|
'madrid', 'barcelona', 'valencia', 'sevilla', 'zaragoza',
|
|
'malaga', 'murcia', 'palma', 'las-palmas', 'bilbao',
|
|
'alicante', 'cordoba', 'valladolid', 'vigo'
|
|
]
|
|
|
|
|
|
@app.route('/')
|
|
def index():
|
|
return render_template('index.html', modo='inicio', ciudades=CIUDADES)
|
|
|
|
|
|
@app.route('/c/<city>')
|
|
def ciudad(city):
|
|
categoria = request.args.get('categoria', '').strip() or None
|
|
busqueda = request.args.get('q', '').strip() or None
|
|
anuncios = models.listar_anuncios(categoria=categoria, busqueda=busqueda, ciudad=city)
|
|
categorias = models.listar_categorias(ciudad=city)
|
|
return render_template(
|
|
'index.html',
|
|
modo='ciudad',
|
|
city=city,
|
|
anuncios=anuncios,
|
|
categorias=categorias,
|
|
categoria_actual=categoria or '',
|
|
busqueda_actual=busqueda or ''
|
|
)
|
|
|
|
|
|
@app.route('/nuevo', methods=['POST'])
|
|
def nuevo():
|
|
titulo = request.form.get('titulo', '').strip()
|
|
contenido = request.form.get('contenido', '').strip()
|
|
categoria = request.form.get('categoria', 'general').strip()
|
|
contacto = request.form.get('contacto', 'madrid@craigslist.local').strip()
|
|
ciudad = request.form.get('ciudad', 'madrid').strip()
|
|
|
|
if titulo and contenido:
|
|
anuncio_id, token = models.crear_anuncio(titulo, contenido, categoria, contacto, ciudad)
|
|
return redirect(f'/c/{ciudad}?nuevo={anuncio_id}&token={token}')
|
|
|
|
return redirect(url_for('index'))
|
|
|
|
|
|
@app.route('/borrar/<int:anuncio_id>', methods=['POST'])
|
|
def borrar(anuncio_id):
|
|
token = request.form.get('token', '').strip()
|
|
models.borrar_anuncio(anuncio_id, token)
|
|
return redirect(request.referrer or '/')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host='0.0.0.0', port=5000)
|