Initial clean commit
This commit is contained in:
commit
6784d81c2c
141 changed files with 25219 additions and 0 deletions
116
routers/noticia.py
Normal file
116
routers/noticia.py
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
from flask import Blueprint, render_template, request, redirect, flash, url_for
|
||||
from db import get_read_conn
|
||||
from psycopg2 import extras
|
||||
|
||||
noticia_bp = Blueprint("noticia", __name__)
|
||||
|
||||
|
||||
@noticia_bp.route("/noticia")
|
||||
def noticia():
|
||||
tr_id = request.args.get("tr_id")
|
||||
noticia_id = request.args.get("id")
|
||||
|
||||
if not tr_id and not noticia_id:
|
||||
flash("No se ha indicado ninguna noticia.", "warning")
|
||||
return redirect(url_for("home.home"))
|
||||
|
||||
with get_read_conn() as conn:
|
||||
conn.autocommit = True
|
||||
with conn.cursor(cursor_factory=extras.DictCursor) as cur:
|
||||
dato = None
|
||||
|
||||
if tr_id:
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT
|
||||
t.id AS traduccion_id,
|
||||
t.lang_from,
|
||||
t.lang_to,
|
||||
t.titulo_trad,
|
||||
t.resumen_trad,
|
||||
n.id AS noticia_id,
|
||||
n.titulo AS titulo_orig,
|
||||
n.resumen AS resumen_orig,
|
||||
n.url,
|
||||
n.fecha,
|
||||
n.imagen_url,
|
||||
n.fuente_nombre,
|
||||
c.nombre AS categoria,
|
||||
p.nombre AS pais
|
||||
FROM traducciones t
|
||||
JOIN noticias n ON n.id = t.noticia_id
|
||||
LEFT JOIN categorias c ON c.id = n.categoria_id
|
||||
LEFT JOIN paises p ON p.id = n.pais_id
|
||||
WHERE t.id = %s
|
||||
""",
|
||||
(int(tr_id),),
|
||||
)
|
||||
dato = cur.fetchone()
|
||||
|
||||
else:
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT
|
||||
NULL AS traduccion_id,
|
||||
NULL AS lang_from,
|
||||
NULL AS lang_to,
|
||||
NULL AS titulo_trad,
|
||||
NULL AS resumen_trad,
|
||||
n.id AS noticia_id,
|
||||
n.titulo AS titulo_orig,
|
||||
n.resumen AS resumen_orig,
|
||||
n.url,
|
||||
n.fecha,
|
||||
n.imagen_url,
|
||||
n.fuente_nombre,
|
||||
c.nombre AS categoria,
|
||||
p.nombre AS pais
|
||||
FROM noticias n
|
||||
LEFT JOIN categorias c ON c.id = n.categoria_id
|
||||
LEFT JOIN paises p ON p.id = n.pais_id
|
||||
WHERE n.id = %s
|
||||
""",
|
||||
(noticia_id,),
|
||||
)
|
||||
dato = cur.fetchone()
|
||||
|
||||
tags = []
|
||||
relacionadas = []
|
||||
|
||||
if dato and dato["traduccion_id"]:
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT tg.valor, tg.tipo
|
||||
FROM tags_noticia tn
|
||||
JOIN tags tg ON tg.id = tn.tag_id
|
||||
WHERE tn.traduccion_id = %s
|
||||
ORDER BY tg.tipo, tg.valor;
|
||||
""",
|
||||
(dato["traduccion_id"],),
|
||||
)
|
||||
tags = cur.fetchall()
|
||||
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT
|
||||
n2.url,
|
||||
n2.titulo,
|
||||
n2.fecha,
|
||||
n2.imagen_url,
|
||||
n2.fuente_nombre,
|
||||
rn.score,
|
||||
t2.titulo_trad,
|
||||
t2.id AS related_tr_id
|
||||
FROM related_noticias rn
|
||||
JOIN traducciones t2 ON t2.id = rn.related_traduccion_id
|
||||
JOIN noticias n2 ON n2.id = t2.noticia_id
|
||||
WHERE rn.traduccion_id = %s
|
||||
ORDER BY rn.score DESC
|
||||
LIMIT 8;
|
||||
""",
|
||||
(dato["traduccion_id"],),
|
||||
)
|
||||
relacionadas = cur.fetchall()
|
||||
|
||||
return render_template("noticia.html", dato=dato, tags=tags, relacionadas=relacionadas)
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue