Browse Source

Updated, working static paths, gunicorn, url_for.

Steve Thielemann 4 years ago
parent
commit
e4db25dd58
8 changed files with 68 additions and 24 deletions
  1. 4 0
      jammin.py
  2. 33 11
      messages.py
  3. 12 0
      req.txt
  4. 8 8
      templates/base.html
  5. 1 1
      templates/list.html
  6. 6 2
      templates/messages.html
  7. 1 1
      templates/missing-area.html
  8. 3 1
      up.sh

+ 4 - 0
jammin.py

@@ -82,6 +82,8 @@ def get_messages(messagebase):
             msgdata["MsgNum"] = msgheader[0].MsgNum
             msgdata["number"] = msgno
             msgdata["written"] = msgheader[0].DateWritten
+            msgdata["received"] = msgheader[0].DateReceived
+            msgdata["processed"] = msgheader[0].DateProcessed
 
             messages.append(msgdata)
             lib.JAM_DelSubPacket(subpacket[0])
@@ -124,6 +126,8 @@ def read_message(base, number):
         message["number"] = actual
         message["MsgNum"] = msgheader[0].MsgNum
         message["written"] = msgheader[0].DateWritten
+        message["received"] = msgheader[0].DateReceived
+        message["processed"] = msgheader[0].DateProcessed
 
         # message text
         buffer = ffi.new("char []", msgheader.TxtLen + 1)

+ 33 - 11
messages.py

@@ -7,7 +7,9 @@ import subprocess
 import base64
 import os
 
-app = Flask(__name__)
+base_path = "/messagebase"
+
+app = Flask(__name__, static_url_path=base_path + "/static")
 
 
 @app.template_filter("datefmt")
@@ -26,23 +28,29 @@ bases = {"FSX_GEN": "fsx_bot", "FSX_BOT": "fsx_bot"}
 
 @cache.cached(timeout=5 * 60, key_prefix="messages")
 def get_messages(base):
-    return jammin.get_messages(base)
+    messages = jammin.get_messages(base)
+    messages.reverse()
+    return messages
 
 
[email protected]("/list")
[email protected](base_path + "/list")
 def list_bases():
-    return render_template("list.html", bases=bases)
+    return render_template(
+        "list.html", bases=bases, base_path=base_path, title="Message Areas"
+    )
     # return 'Here would be a listing of message bases'
 
 
[email protected]("/messages/<area>")
[email protected](base_path + "/messages/<area>")
 def display_messages(area):
     if area not in bases:
-        return render_template("missing-area.html")
+        return render_template(
+            "missing-area.html", base_path=base_path, title="Missing Area"
+        )
     # messages = jammin.get_messages(bases[area])
     messages = get_messages(bases[area])
 
-    messages.reverse()
+    # messages.reverse()  # cached.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
@@ -62,7 +70,12 @@ def display_messages(area):
     messages = messages[start:end]
 
     return render_template(
-        "messages.html", messages=messages, area=area, pagination=pagination
+        "messages.html",
+        messages=messages,
+        area=area,
+        pagination=pagination,
+        base_path=base_path,
+        title="Messages for " + bases[area],
     )
 
 
@@ -81,10 +94,12 @@ def ansi_to_png(raw_ansi_bytes, idx):
 
 
 # <img alt="My Image" src="data:image/png;base64,
[email protected]("/read/<area>/<int:msgno>")
[email protected](base_path + "/read/<area>/<int:msgno>")
 def display_message(area, msgno):
     if area not in bases:
-        return render_template("missing-area.html")
+        return render_template(
+            "missing-area.html", base_path=base_path, title="Missing Area"
+        )
 
     message = jammin.read_message(bases[area], msgno)
 
@@ -95,4 +110,11 @@ def display_message(area, msgno):
         else:
             message["text"] = message["text"].replace("\r", "\n")  # <br >\n")
 
-    return render_template("message.html", message=message, area=area, msgnumber=msgno)
+    return render_template(
+        "message.html",
+        message=message,
+        area=area,
+        msgnumber=msgno,
+        base_path=base_path,
+        title="Message {0}".format(msgno),
+    )

+ 12 - 0
req.txt

@@ -1,11 +1,23 @@
+appdirs==1.4.4
+attrs==19.3.0
+black==19.10b0
 cffi==1.14.0
 click==7.1.2
 Flask==1.1.2
 Flask-Caching==1.9.0
 flask-paginate==0.7.0
+gunicorn==20.0.4
 itsdangerous==1.1.0
 Jinja2==2.11.2
 MarkupSafe==1.1.1
+pathspec==0.8.0
+pendulum==2.1.0
 pkg-resources==0.0.0
 pycparser==2.20
+python-dateutil==2.8.1
+pytzdata==2019.3
+regex==2020.6.8
+six==1.15.0
+toml==0.10.1
+typed-ast==1.4.1
 Werkzeug==1.0.1

+ 8 - 8
templates/base.html

@@ -3,10 +3,10 @@
     <meta charset="utf-8">
     <meta http-equiv="x-ua-compatible" content="ie=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>{% block title %}{% endblock %} - BZ&BZ BBS</title>
-    <link rel="stylesheet" href="{{ url_for('static', filename='css/foundation.css') }}">
-    <link rel="stylesheet" href="{{ url_for('static', filename='css/app.css') }}">
-    <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
+    <title>{{ title }} - BZ&amp;BZ BBS</title>
+    <link rel="stylesheet" href="{{ url_for( 'static', filename='css/foundation.css') }}">
+    <link rel="stylesheet" href="{{ url_for( 'static', filename='css/app.css') }}">
+    <link rel="stylesheet" href="{{ url_for( 'static', filename='style.css') }}">
   </head>
   <body>
     <div class="grid-container">
@@ -17,9 +17,9 @@
       </div>  
 {% block content %}{% endblock %}
     </div>
-    <script src="{{ url_for('static', filename='js/vendor/jquery.js') }}"></script>
-    <script src="{{ url_for('static', filename='js/vendor/what-input.js') }}"></script>
-    <script src="{{ url_for('static', filename='js/vendor/foundation.js') }}"></script>
-    <script src="{{ url_for('static', filename='js/app.js') }}"></script>
+    <script src="{{ url_for( 'static', filename='js/vendor/jquery.js') }}"></script>
+    <script src="{{ url_for( 'static', filename='js/vendor/what-input.js') }}"></script>
+    <script src="{{ url_for( 'static', filename='js/vendor/foundation.js') }}"></script>
+    <script src="{{ url_for( 'static', filename='js/app.js') }}"></script>
   </body>
 </html>

+ 1 - 1
templates/list.html

@@ -6,6 +6,6 @@
 
 {% block content %}
 {% for base in bases.keys() %}
-<div><a href="/messages/{{ base }}">{{ base }}</a></div>
+<div><a href="{{ url_for('display_messages', area=base) }}">{{ base }}</a></div>
 {% endfor %}
 {% endblock %}

+ 6 - 2
templates/messages.html

@@ -7,8 +7,12 @@
 {% block content %}
 
 <div class="large-12 cell">
+
 <div class="grid-x">
 <div class="large-12 cell">
+<a href="{{ url_for('list_bases') }}">Back to Message Base Areas</a>
+</div>
+<div class="large-12 cell">
 {{ pagination.info }}
 </div>
 <div class="large-12 cell">
@@ -19,11 +23,11 @@
 {% for msg in messages %}
 <div class="grid-x padding-x">
 
-<div class="large-1 cell"><a href="/read/{{ area }}/{{ msg.MsgNum}}">{{ loop.index + pagination.skip }}</a></div>
+<div class="large-1 cell"><a href="{{ url_for('display_message', area=area, msgno=msg.MsgNum) }}">{{ msg.MsgNum }}</a></div>
 <div class="large-2 cell">{{ msg.written|datefmt }}</div>
 <div class="large-2 cell">{{ msg.from }}</div>
 <div class="large-2 cell">{{ msg.to }}</div>
-<div class="large-5 cell"><a href="/read/{{ area }}/{{ msg.MsgNum}}">{{ msg.subject }}</a></div>
+<div class="large-5 cell"><a href="{{ url_for('display_message', area=area, msgno=msg.MsgNum) }}">{{ msg.subject }}</a></div>
 </div>
 {% endfor %}
 <div class="large-12 cell">

+ 1 - 1
templates/missing-area.html

@@ -6,6 +6,6 @@
 
 {% block content %}
 <p>Sorry, that area doesn't exist.</p>
-<a href="/list">Message Area List</a>
+<a href="{{ url_for('list_bases') }}">Message Area List</a>
 
 {% endblock %}

+ 3 - 1
up.sh

@@ -1,4 +1,6 @@
 #!/bin/bash
 
-FLASK_APP=messages.py flask run
+gunicorn messages:app
+
+# FLASK_APP=messages.py flask run