from flask import Flask, render_template
from flask_paginate import Pagination, get_page_parameter, get_page_args
from flask_caching import Cache
from flask import request
import pendulum
app = Flask(__name__)
@app.template_filter("datefmt")
def format_datetime(value):
dt = pendulum.from_timestamp(value, tz=pendulum.tz.local_timezone())
return dt.to_datetime_string()
# Check Configuring Flask-Caching section for more details
cache = Cache(app, config={"CACHE_TYPE": "filesystem", "CACHE_DIR": "cache"})
import jammin
bases = {"FSX_GEN": "fsx_bot", "FSX_BOT": "fsx_bot"}
@cache.cached(timeout=50, key_prefix="messages")
def get_messages(base):
return jammin.get_messages(base)
@app.route("/list")
def list_bases():
return render_template("list.html", bases=bases)
# return 'Here would be a listing of message bases'
@app.route("/messages/")
def display_messages(area):
if area not in bases:
return render_template("missing-area.html")
# messages = jammin.get_messages(bases[area])
messages = get_messages(bases[area])
messages.reverse()
page = request.args.get(get_page_parameter(), type=int, default=1)
# get_page_arg defaults to page 1, per_page of 10
PER_PAGE = 50
total = len(messages)
pagination = Pagination(
page=page,
total=total,
css_framework="foundation",
record_name="messages",
per_page=PER_PAGE,
)
page, per_page, offset = get_page_args()
start = (page - 1) * PER_PAGE
end = start + PER_PAGE
# messages = messages[(page-1) * PER_PAGE:offset+PER_PAGE]
messages = messages[start:end]
return render_template(
"messages.html", messages=messages, area=area, pagination=pagination
)
@app.route("/read//")
def display_message(area, msgno):
if area not in bases:
return render_template("missing-area.html")
message = jammin.read_message(bases[area], msgno)
if "text" in message:
message["text"] = message["text"].replace("\r", "\n") #
\n")
return render_template("message.html", message=message, area=area, msgnumber=msgno)