Add status page #30

Merged
W1CDN merged 36 commits from dashboard-page into main 2023-08-26 19:05:45 -05:00
2 changed files with 55 additions and 3 deletions
Showing only changes of commit e2c3adf5c0 - Show all commits

View File

@ -1,4 +1,4 @@
from flask import Flask, request
from flask import Flask, request, render_template
from flask_restful import Resource, Api, reqparse
from datetime import date, timedelta
import configparser
@ -6,6 +6,7 @@ import csv
import ast
import glob
import json, operator
import requests
import sqlite3
api_app = Flask(__name__)
api = Api(api_app)
@ -89,6 +90,18 @@ def select_frames(conn, n, from_, url_params):
rows = cur.fetchall()
return rows
@api_app.route('/')
def index():
# Get list of recent packets using API
# TODO use relative path
response = json.loads(requests.get("https://digi.w1cdn.net/aprs_api/packets").text)['data']
return render_template('index.html',
station_call = config['Settings']['station_call'],
station_lat = config['Settings']['station_lat'],
station_lon = config['Settings']['station_lon'],
d = response)
class Packets(Resource):
def get(self):
# Handle arguments that may or may not exist
@ -103,7 +116,7 @@ class Packets(Resource):
data = select_frames(conn, n = n, from_ = from_, url_params = request.args.to_dict())
# Sort by created date, descending (https://stackoverflow.com/a/45266808)
#data.sort(key=operator.itemgetter('created'), reverse=True)
return {'data': data}, 200 # return data and 200 OK code
return {data}, 200 # return data and 200 OK code
# Read config
config = read_config()
@ -113,7 +126,7 @@ log_folder = config['Settings']['log_folder']
import subprocess
subprocess.Popen(["python3","kiss_and_db.py"])
api.add_resource(Packets, '/packets') # and '/locations' is our entry point for Locations
api.add_resource(Packets, '/packets')
if __name__ == '__main__':
api_app.run(debug=True, host='0.0.0.0', port=5001) # run our Flask app

39
templates/index.html Normal file
View File

@ -0,0 +1,39 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{station_call}} Status</title>
<style>
table, th, td {
border: 1px solid black;
}
</style>
</head>
<body>
<h1>{{station_call}} Status</h1>
<h2>{{station_lat}}, {{station_lon}}</h2>
<h3> Recent RF Packets </h3>
<table>
<tr>
<th> from </th>
<th> object_name </th>
<th> created (utc) </th>
<th> more </th>
</tr>
{% for i in d %}
<tr>
<td> <a href="https://digi.w1cdn.net/aprs_api/packets?from={{ i['from'] }}">{{ i['from'] }}</a> </td>
<td> {{ i['object_name'] }} </td>
<td> {{ i['created'] }} </td>
<td> <a href="https://digi.w1cdn.net/aprs_api/packets?id={{ i['id'] }}">more</a>
</tr>
{% endfor %}
</table>
<h3> Recent Stations </h3>
Coming soon, see <a href="https://amiok.net/gitea/W1CDN/aprs_tool/issues/16">https://amiok.net/gitea/W1CDN/aprs_tool/issues/16</a>.
</body>
</html>