forked from pvx/litsimaja
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.5 KiB
60 lines
1.5 KiB
#!/usr/bin/env python3 |
|
import logging |
|
import sys |
|
|
|
import lib.ProgramLoading as Pl |
|
from lib.Litsimaja import Litsimaja |
|
from flask import Flask, request, Response, render_template |
|
|
|
# logging |
|
logger = logging.getLogger('litsimaja') |
|
logger.setLevel(logging.DEBUG) |
|
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') |
|
file_handler = logging.FileHandler('litsimaja.log') |
|
file_handler.setFormatter(formatter) |
|
logger.addHandler(file_handler) |
|
stdout_handler = logging.StreamHandler(sys.stdout) |
|
stdout_handler.setFormatter(formatter) |
|
logger.addHandler(stdout_handler) |
|
|
|
# start litsimaja |
|
lm = Litsimaja() |
|
app = Flask(__name__, static_url_path='', static_folder='templates') |
|
|
|
|
|
@app.route('/', methods=['GET']) |
|
def respondroot(): |
|
return render_template( |
|
'index.html', |
|
programs=Pl.list_all(True), |
|
regions=lm.get_region_ids(), |
|
) |
|
|
|
|
|
@app.route('/run') |
|
def run(): |
|
Pl.run('siinus', 'MyProgram', lm, logger, {'color': [50, 50, 50]}) |
|
return Response(status=200) |
|
|
|
|
|
@app.route('/crash', methods=['GET']) |
|
def crash(): |
|
lm.clear_loops() |
|
return Response(status=200) |
|
|
|
|
|
@app.route('/program/<program>', methods=['POST']) |
|
def run_program(program): |
|
args = request.get_json(force=True) |
|
prg = program.split('.') |
|
Pl.run(prg[0], prg[1], lm, logger, args) |
|
return Response(status=200) |
|
|
|
|
|
@app.route('/region/<region>', methods=['GET']) |
|
def switch_region(region): |
|
lm.switch_region(int(region)) |
|
return Response(status=200) |
|
|
|
|
|
app.run('0.0.0.0', 8080)
|
|
|