86 lines
2.0 KiB
Python
86 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 AND featured = 1
|
|
ORDER BY created ASC
|
|
LIMIT 5000;
|
|
'''
|
|
|
|
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."""
|
|
print(os.getcwd())
|
|
articles = get_articles()
|
|
|
|
if articles is not None:
|
|
context = {'articles': articles}
|
|
return render_template('base.html', **context)
|
|
|
|
return "Failed to fetch articles."
|
|
|
|
if __name__ == "__main__":
|
|
app.run() |