forked from sch/Blasta
65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
|
|
TODO
|
|
|
|
* Delete cookie if session does not match
|
|
|
|
* Delete entry/tag/jid combination row upon removal of a tag.
|
|
|
|
"""
|
|
|
|
import argparse
|
|
from blasta.config import Settings, Share
|
|
from blasta.http.instance import HttpInstance
|
|
from blasta.database.sqlite import DatabaseSQLite
|
|
import json
|
|
import logging
|
|
import os
|
|
from os.path import getsize, exists
|
|
import sys
|
|
import time
|
|
from typing import Optional
|
|
import uvicorn
|
|
import webbrowser
|
|
|
|
|
|
try:
|
|
import tomllib
|
|
except:
|
|
import tomli as tomllib
|
|
|
|
|
|
def main():
|
|
directory_config = Settings.get_directory()
|
|
sql_filename = os.path.join(directory_config, 'blasta.sql')
|
|
directory_data = Share.get_directory()
|
|
dbs_filename = os.path.join(directory_data, 'main.sqlite')
|
|
if not exists(dbs_filename) or not getsize(dbs_filename):
|
|
DatabaseSQLite.create_tables(sql_filename, dbs_filename)
|
|
accounts = {}
|
|
sessions = {}
|
|
http_instance = HttpInstance(accounts, sessions)
|
|
return http_instance.app
|
|
|
|
app = main()
|
|
|
|
if __name__ == 'blasta.__main__':
|
|
parser = argparse.ArgumentParser(
|
|
prog='blasta',
|
|
description='Blasta - A collaborative annotation system.',
|
|
usage='%(prog)s [OPTION]...')
|
|
parser.add_argument('-v', '--version', help='print version',
|
|
action='version', version='0.1')
|
|
parser.add_argument('-p', '--port', help='port number', dest='port')
|
|
parser.add_argument('-o', '--open', help='open an html browser', action='store_const', const=True, dest='open')
|
|
args = parser.parse_args()
|
|
port = int(args.port or 8000)
|
|
uvicorn.run(app, host='localhost', port=port)
|
|
if args.open:
|
|
# TODO Check first time
|
|
webbrowser.open('http://localhost:{}/help/about'.format(port))
|
|
webbrowser.open_new_tab('http://localhost:{}'.format(port))
|
|
|