scripts/joomla-export/index.py

89 lines
2.0 KiB
Python

import pymysql
from jinja2 import Environment, FileSystemLoader
from flask import Flask, render_template
import os
# Configuration
HOST = "localhost"
USER = "demoUser"
PASSWORD = "demoPassword"
DATABASE = "cijliness"
CHARSET = 'utf8mb4'
# Initialize Flask app and Jinja2 template engine
app = Flask(__name__, template_folder=os.path.abspath('./templates'))
app.config['TEMPLATES_AUTO_RELOAD'] = True
app.config['SECRET_KEY'] = 'your_secret_key'
loader = FileSystemLoader('templates')
env = Environment(loader=loader)
app.jinja_env = env
def get_formatted_date(value):
"""Custom Jinja2 date filter."""
return value.strftime("%Y-%m-%d %H:%M")
env.filters['date'] = get_formatted_date
def get_articles():
"""Fetch articles from the database."""
try:
connection = pymysql.connect(
host=HOST,
user=USER,
password=PASSWORD,
db=DATABASE,
charset=CHARSET
)
cursor = connection.cursor()
query = '''
SELECT id, title, introtext,created FROM cijliness.cijl_content
WHERE state = 1
ORDER BY id ASC;
'''
cursor.execute(query)
articles = []
for row in cursor:
articles.append({
'id': row[0],
'title': row[1],
'introtext': row[2],
'created': row[3],
})
cursor.close()
connection.commit()
connection.close()
return articles
except pymysql.MySQLError as e:
print(f"Error: {e}")
return None
@app.route("/")
def index():
"""Render base.html with articles."""
articles = get_articles()
if articles is not None:
context = {'articles': articles}
output = render_template('base.html', **context)
with open("rendered.html", "w") as f:
f.write(output)
return render_template('base.html', **context)
return "Failed to fetch articles."
if __name__ == "__main__":
app.run()
index()