Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Noticias leidas desde ficheros markdown en la carpeta noticias #51

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 3 additions & 12 deletions config/web.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import random

import noticias

AUTHOR = 'Python España'
SITENAME = 'PyConES23'

Expand Down Expand Up @@ -306,18 +308,7 @@

# NOTICIAS

NOTICIAS = [
{
"titulo": "¡Ya puedes comprar tus entradas!",
"fecha": "5/5/2023",
"contenido": "¡Por fin ha llegado el día! Ya están aquí las entradas del evento más esperado del año de la comunidad Python en España",
},
{
"titulo": "¡Lanzamiento del sitio web!",
"fecha": "4/12/2023",
"contenido": "Os damos la bienvenida a la PyConES, la conferencia de Python más importante de España. Un evento que reunirá a cientos de entusiastas del lenguaje de programación Python, con una agenda increíble en la mejor localización posible. Si quieres formar parte de nuestros patrocinadores para hacer esta conferencia aún mas impresionante puedes disponer de espacio propio dentro del evento.",
},
]
NOTICIAS = noticias.ultimas_noticias()

ORG = [
{
Expand Down
39 changes: 39 additions & 0 deletions noticias.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import glob
from datetime import date as Date
from dataclasses import dataclass

import markdown


@dataclass
class Noticia:
titulo: str
fecha: Date
contenido: str


def _iter_noticias():
news_parser = markdown.Markdown(extensions=['extra', 'meta'])
for filename in glob.glob('noticias/*.md'):
news_parser.reset()
with open(filename, 'r', encoding='utf-8') as f:
contenido = news_parser.convert(f.read())
yield Noticia(
titulo=news_parser.Meta['titulo'][0],
fecha=Date.fromisoformat(news_parser.Meta['fecha'][0]),
contenido=contenido,
)


def ultimas_noticias(max_noticias=5):
news = sorted(_iter_noticias(), reverse=True, key=lambda d: d.fecha)
return news[0:max_noticias]


def main():
for noticia in ultimas_noticias():
print(noticia.fecha, noticia.titulo)


if __name__ == "__main__":
main()
7 changes: 7 additions & 0 deletions noticias/entradas-2023-05-05.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
titulo: ¡Ya puedes comprar tus entradas!
fecha: 2023-05-05
---

**¡Por fin ha llegado el día!** Ya están aquí las entradas del evento más
esperado del año de la comunidad Python en España.
10 changes: 10 additions & 0 deletions noticias/web-2023-04-12.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
titulo: ¡Lanzamiento del sitio web!
fecha: 2023-04-12
---

Os damos la bienvenida a la PyConES, la conferencia de Python más importante de
España. Un evento que reunirá a cientos de entusiastas del lenguaje de
programación Python, con una agenda increíble en la mejor localización posible.
Si quieres formar parte de nuestros patrocinadores para hacer esta conferencia
aún mas impresionante puedes disponer de espacio propio dentro del evento.
5 changes: 5 additions & 0 deletions theme/pycones23/static/assets/css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -894,3 +894,8 @@ a.boton-reserva {
margin-top: 1rem;
margin-bottom: 1rem;
}

.fecha {
font-size: 90%;
color: #edd3c5;
}
5 changes: 4 additions & 1 deletion theme/pycones23/templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@ <h1>Noticias</h1>

{% for noticia in NOTICIAS %}
<div class="news-box">
<div class="news-title">{{ noticia.titulo }} <span>{{ noticia.fecha }}</span></div>
<div class="news-title">{{ noticia.titulo }}
<br><small><span class="fecha">
{{ noticia.fecha.strftime('%d/%b/%Y') }}
</span></small></div>
<div class="news-content">
{{ noticia.contenido }}
</div>
Expand Down