Skip to content

Commit

Permalink
Jhoanrodriguez/add pylint GitHub actions (PyBAQ#567)
Browse files Browse the repository at this point in the history
* added pylint verification

* Include pylint at requirements.txt fixed some pylint warnings.

* Fixed all the pylint warnings
  • Loading branch information
JhoanRodriguez authored Oct 29, 2024
1 parent 5b5b93a commit ab86a88
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 17 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ jobs:
run: |
python -m pip install --upgrade pip setuptools
pip install -r requirements.txt
pip install -r test-requirements.txt
- name: Verificar Pylint
run: pylint --recursive=y tests scripts

- name: Construir pagina pybaq
run: lektor build -O '${{ env.OUTPUT }}'
Expand Down
30 changes: 29 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,33 @@
astroid==3.2.4
babel==2.16.0
blinker==1.8.2
certifi==2024.8.30
charset-normalizer==3.4.0
click==8.1.7
dill==0.3.9
ExifRead==3.0.0
filetype==1.2.0
Flask==2.3.3
idna==3.10
importlib_metadata==8.5.0
inifile==0.4.1
isort==5.13.2
itsdangerous==2.2.0
Jinja2==3.1.4
Lektor==3.3.11
MarkupSafe==2.1.5
mccabe==0.7.0
mistune==0.8.4
platformdirs==4.3.6
pylint==3.2.7
python-slugify==8.0.4
pytz==2023.3.post1
requests==2.32.0
text-unidecode==1.3
tomli==2.0.2
tomlkit==0.13.2
typing_extensions==4.12.2
urllib3==2.2.3
watchdog==4.0.2
Werkzeug==2.3.7
pytz==2023.3.post1
zipp==3.20.2
73 changes: 57 additions & 16 deletions scripts/create_events.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,46 @@
from collections import OrderedDict
"""
Este script procesa eventos de un archivo JSON de Meetup y los transforma
para ser almacenados en el sistema de contenido.
"""

import json
import os
from lektor.project import Project
from collections import OrderedDict

from lektor.utils import slugify

HERE = os.path.abspath(os.path.dirname(__file__))
PROJECT_ROOT_PATH = os.path.dirname(HERE)


def extract_meetup_json(file):
"""
Lee el archivo JSON proporcionado y devuelve una lista de eventos.
Args:
file (str): Ruta al archivo JSON de Meetup.
Returns:
list: Lista de eventos obtenidos del archivo JSON.
"""
with open(file, "r", encoding="utf-8") as meetup_data:
events = json.loads(meetup_data.read())
return events


def transform_event(event: dict):
"""
Transforma un evento de Meetup en un diccionario ordenado con los campos necesarios.
Args:
event (dict): Diccionario con los datos del evento de Meetup.
Returns:
OrderedDict: Diccionario ordenado con los campos transformados.
"""
content = OrderedDict()
content["title"] = event["name"]
content["date_start"] = "{} {}".format(event["local_date"], event["local_time"])
content["date_start"] = f"{event['local_date']} {event['local_time']}"
content["link"] = event["link"]
content["information"] = event["description"]
try:
Expand All @@ -29,25 +54,41 @@ def transform_event(event: dict):
print("Key error: venue on", event["name"])
return content


def write_content(slug, fields):
folderpath = os.path.join(PROJECT_ROOT_PATH, 'content', 'eventos', slug)
"""
Escribe el contenido del evento en un archivo con formato específico.
Args:
slug (str): Slug único del evento.
fields (OrderedDict): Campos del evento a escribir en el archivo.
"""
folderpath = os.path.join(PROJECT_ROOT_PATH, "content", "eventos", slug)
if not os.path.isdir(folderpath):
os.makedirs(folderpath)
filepath = os.path.join(folderpath, 'contents.lr')
items = ['{}: {}\n'.format(key, value) for key, value in fields.items()]
filepath = os.path.join(folderpath, "contents.lr")
items = [f"{key}: {value}\n" for key, value in fields.items()]

if os.path.isfile(filepath):
print("File for slug {} already exists, skipping".format(slug))
print(f"File for slug {slug} already exists, skipping")
else:
with open(filepath, 'w') as fh:
fh.write('---\n'.join(items))
with open(filepath, "w", encoding="utf-8") as fh:
fh.write("---\n".join(items))

def load_events(events):
for event in events:
write_content(event["date_start"][:10] + "-" + slugify(event["title"]), event)

if __name__ == '__main__':
events = extract_meetup_json("databags/meetup.json")
transformed_events = [transform_event(event) for event in events["past_events"]]
load_events(transformed_events)
def load_events(event_list):
"""
Carga y guarda eventos transformados.
Args:
event_list (list): Lista de eventos transformados.
"""
for event in event_list:
slug = event["date_start"][:10] + "-" + slugify(event["title"])
write_content(slug, event)


if __name__ == "__main__":
event_data = extract_meetup_json("databags/meetup.json")
transformed_events = [transform_event(event) for event in event_data["past_events"]]
load_events(transformed_events)
1 change: 1 addition & 0 deletions scripts/events.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Descarga eventos usando Meetup api"""

import json

import requests

# NOTE: This endpoint no requires authentication, but this API is deprecated
Expand Down

0 comments on commit ab86a88

Please sign in to comment.