41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
"""Grotti starten. Kern und Seiten liegen daneben."""
|
|
|
|
import threading
|
|
|
|
from grotti import jobs, library, store
|
|
from grotti.config import load
|
|
from grotti.db import connect, prepare
|
|
from web.app import create_app
|
|
|
|
|
|
def background(cfg):
|
|
def work():
|
|
try:
|
|
with connect(cfg["database_url"]) as conn:
|
|
library.sync_watch(conn, cfg, force=False)
|
|
jobs.sync_history(conn, cfg)
|
|
conn.commit()
|
|
except Exception as exc:
|
|
print("Abgleich: %s" % exc, flush=True)
|
|
|
|
threading.Thread(target=work, name="grotti-abgleich", daemon=True).start()
|
|
|
|
|
|
def main():
|
|
cfg = load()
|
|
cfg["data_dir"].mkdir(parents=True, exist_ok=True)
|
|
(cfg["data_dir"] / "eingang").mkdir(exist_ok=True)
|
|
prepare(cfg["database_url"])
|
|
with connect(cfg["database_url"]) as conn:
|
|
store.seed_printers(conn, cfg["printers_file"])
|
|
store.seed_materials(conn)
|
|
conn.commit()
|
|
app = create_app(cfg)
|
|
background(cfg)
|
|
print("Grotti: http://%s:%s/" % (cfg["host"], cfg["port"]), flush=True)
|
|
app.run(host=cfg["host"], port=cfg["port"], threaded=True, use_reloader=False)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|