Skip to content

Commit 1272591

Browse files
committed
Remove pseudo-interface for master.py + small fixes + cleanup
1 parent 1e24fb0 commit 1272591

File tree

11 files changed

+306
-391
lines changed

11 files changed

+306
-391
lines changed

bci/analysis/plot_factory.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
class PlotFactory:
66

77
@staticmethod
8-
def get_plot_revision_data(params: PlotParameters, db: MongoDB) -> dict:
9-
revision_docs = db.get_documents_for_plotting(params)
8+
def get_plot_revision_data(params: PlotParameters) -> dict:
9+
revision_docs = MongoDB().get_documents_for_plotting(params)
1010
revision_results = PlotFactory.__add_outcome_info(params, revision_docs)
1111
return revision_results
1212

1313
@staticmethod
14-
def get_plot_version_data(params: PlotParameters, db: MongoDB) -> dict:
15-
version_docs = db.get_documents_for_plotting(params, releases=True)
14+
def get_plot_version_data(params: PlotParameters) -> dict:
15+
version_docs = MongoDB().get_documents_for_plotting(params, releases=True)
1616
version_results = PlotFactory.__add_outcome_info(params, version_docs)
1717
return version_results
1818

bci/app.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,37 @@
33
from flask import Flask
44
from flask_sock import Sock
55

6-
from bci.main import Main as bci_api
6+
from bci.configuration import Global, Loggers
7+
from bci.main import Main
78

89
sock = Sock()
910

11+
1012
def create_app():
11-
bci_api.initialize()
13+
Loggers.configure_loggers()
14+
15+
if not Global.check_required_env_parameters():
16+
raise Exception('Not all required environment variables are available')
17+
18+
# Instantiate main object and add to global flask context
19+
main = Main()
1220

1321
# Blueprint modules are only imported after loggers are configured
1422
from bci.web.blueprints.api import api
1523
from bci.web.blueprints.experiments import exp
1624

1725
app = Flask(__name__)
1826
# We don't store anything sensitive in the session, so we can use a simple secret key
27+
app.config['main'] = main
1928
app.secret_key = 'secret_key'
2029

2130
app.register_blueprint(api)
2231
app.register_blueprint(exp)
2332
sock.init_app(app)
2433

2534
# Configure signal handlers
26-
signal.signal(signal.SIGTERM, bci_api.sigint_handler)
27-
signal.signal(signal.SIGINT, bci_api.sigint_handler)
35+
signal.signal(signal.SIGTERM, main.sigint_handler)
36+
signal.signal(signal.SIGINT, main.sigint_handler)
2837

2938
return app
3039

bci/configuration.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,5 +170,14 @@ def handle_exception(exc_type, exc_value, exc_traceback):
170170
bci_logger.debug('Loggers initialized')
171171

172172
@staticmethod
173-
def get_formatted_buffer_logs() -> list[str]:
174-
return [Loggers.formatter.format(record) for record in Loggers.memory_handler.buffer]
173+
def get_logs() -> list[str]:
174+
return list(
175+
map(
176+
lambda x: Loggers.format_to_user_log(x.__dict__),
177+
Loggers.memory_handler.buffer,
178+
)
179+
)
180+
181+
@staticmethod
182+
def format_to_user_log(log: dict) -> str:
183+
return f'[{log["asctime"]}] [{log["levelname"]}] {log["name"]}: {log["msg"]}'

bci/database/mongo/mongodb.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
StateResult,
1919
TestParameters,
2020
TestResult,
21-
WorkerParameters,
2221
)
2322
from bci.evaluations.outcome_checker import OutcomeChecker
2423
from bci.version_control.states.state import State, StateCondition

bci/evaluations/logic.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,35 @@ class PlotParameters:
228228
dirty_allowed: bool = True
229229
target_cookie_name: Optional[str] = None
230230

231+
@staticmethod
232+
def from_dict(data: dict) -> PlotParameters:
233+
if data.get("lower_version", None) and data.get("upper_version", None):
234+
major_version_range = (data["lower_version"], data["upper_version"])
235+
else:
236+
major_version_range = None
237+
if data.get("lower_revision_nb", None) and data.get("upper_revision_nb", None):
238+
revision_number_range = (
239+
data["lower_revision_nb"],
240+
data["upper_revision_nb"],
241+
)
242+
else:
243+
revision_number_range = None
244+
return PlotParameters(
245+
data.get("plot_mech_group"),
246+
data.get("target_mech_id"),
247+
data.get("browser_name"),
248+
data.get("db_collection"),
249+
major_version_range=major_version_range,
250+
revision_number_range=revision_number_range,
251+
browser_config=data.get("browser_setting", "default"),
252+
extensions=data.get("extensions", []),
253+
cli_options=data.get("cli_options", []),
254+
dirty_allowed=data.get("dirty_allowed", True),
255+
target_cookie_name=None
256+
if data.get("check_for") == "request"
257+
else data.get("target_cookie_name", "generic"),
258+
)
259+
231260

232261
@staticmethod
233262
def evaluation_factory(kwargs: ImmutableMultiDict) -> list[EvaluationParameters]:

0 commit comments

Comments
 (0)