2015-10-10 17:42:44 +02:00
|
|
|
#!/usr/bin/python3
|
2015-09-03 19:35:09 +02:00
|
|
|
|
2015-10-10 17:42:44 +02:00
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__) + '/' + '../..'))
|
|
|
|
|
|
|
|
from ffmap.web.api import api
|
|
|
|
from ffmap.web.filters import filters
|
|
|
|
from ffmap.dbtools import FreifunkDB
|
2015-10-07 16:19:07 +02:00
|
|
|
|
2015-10-12 14:57:41 +02:00
|
|
|
from flask import Flask, render_template, request, Response
|
2015-11-06 18:19:21 +01:00
|
|
|
import bson
|
2015-09-03 19:35:09 +02:00
|
|
|
from bson.json_util import dumps as bson2json
|
2015-10-02 23:53:47 +02:00
|
|
|
from bson.objectid import ObjectId
|
2015-09-03 19:35:09 +02:00
|
|
|
|
|
|
|
app = Flask(__name__)
|
2015-10-07 16:19:07 +02:00
|
|
|
app.register_blueprint(api, url_prefix='/api')
|
|
|
|
app.register_blueprint(filters)
|
|
|
|
|
2015-10-10 17:42:44 +02:00
|
|
|
db = FreifunkDB().handle()
|
2015-09-03 19:35:09 +02:00
|
|
|
|
|
|
|
tileurls = {
|
2015-10-10 17:42:44 +02:00
|
|
|
"links_and_routers": "/tiles/links_and_routers",
|
|
|
|
"hoods": "/tiles/hoods",
|
2015-09-03 19:35:09 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@app.route('/')
|
|
|
|
def index():
|
2015-10-02 23:53:47 +02:00
|
|
|
return render_template("index.html")
|
|
|
|
|
|
|
|
@app.route('/map')
|
|
|
|
def router_map():
|
2015-09-03 19:35:09 +02:00
|
|
|
return render_template("map.html", tileurls=tileurls)
|
|
|
|
|
2015-10-02 23:53:47 +02:00
|
|
|
@app.route('/routers')
|
|
|
|
def router_list():
|
|
|
|
return render_template("router_list.html", routers=db.routers.find({}, {
|
|
|
|
"hostname": 1,
|
|
|
|
"status": 1,
|
|
|
|
"hood": 1,
|
|
|
|
"user.nickname": 1,
|
|
|
|
"hardware.name": 1,
|
|
|
|
}))
|
|
|
|
|
|
|
|
@app.route('/routers/<dbid>')
|
|
|
|
def router_info(dbid):
|
2015-11-06 18:19:21 +01:00
|
|
|
try:
|
|
|
|
router = db.routers.find_one({"_id": ObjectId(dbid)})
|
|
|
|
assert router
|
|
|
|
except (bson.errors.InvalidId, AssertionError):
|
|
|
|
return "Router not found"
|
2015-10-12 14:57:41 +02:00
|
|
|
if request.args.get('json', None) != None:
|
|
|
|
return Response(bson2json(router, sort_keys=True, indent=4), mimetype='application/json')
|
|
|
|
else:
|
|
|
|
return render_template("router.html", router=router, tileurls=tileurls)
|
2015-10-02 23:53:47 +02:00
|
|
|
|
2015-10-10 17:42:44 +02:00
|
|
|
|
2015-09-03 19:35:09 +02:00
|
|
|
if __name__ == '__main__':
|
2015-10-02 23:53:47 +02:00
|
|
|
app.run(host='0.0.0.0', debug=True)
|
2015-10-10 17:42:44 +02:00
|
|
|
else:
|
|
|
|
app.template_folder = "/usr/share/ffmap/templates"
|
|
|
|
app.static_folder = "/usr/share/ffmap/static"
|
|
|
|
#app.debug = True
|