144 lines
8.0 KiB
Python
144 lines
8.0 KiB
Python
"""
|
|
Post startup script for the BEC client. This script is executed after the
|
|
IPython shell is started. It is used to load the beamline specific
|
|
information and to setup the prompts.
|
|
|
|
The script is executed in the global namespace of the IPython shell. This
|
|
means that all variables defined here are available in the shell.
|
|
|
|
If needed, bec command-line arguments can be parsed here. For example, to
|
|
parse the --session argument, add the following lines to the script:
|
|
|
|
import argparse
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--session", help="Session name", type=str, default="my_default_session")
|
|
args = parser.parse_args()
|
|
|
|
if args.session == "my_session":
|
|
print("Loading my_session session")
|
|
from bec_plugins.bec_ipython_client.plugins.my_session import *
|
|
else:
|
|
print("Loading default session")
|
|
from bec_plugins.bec_ipython_client.plugins.default_session import *
|
|
"""
|
|
|
|
# pylint: disable=invalid-name, unused-import, import-error, undefined-variable, unused-variable, unused-argument, no-name-in-module
|
|
|
|
from bec_lib import bec_logger
|
|
|
|
logger = bec_logger.logger
|
|
|
|
logger.info("Using the cSAXS startup script.")
|
|
|
|
|
|
from csaxs_bec.bec_ipython_client.plugins.tool_box.debug_tools import DebugTools
|
|
|
|
debug = DebugTools()
|
|
logger.success("Debug tools loaded. Use 'debug' to access them.")
|
|
|
|
# pylint: disable=import-error
|
|
_args = _main_dict["args"]
|
|
|
|
_session_name = "cSAXS"
|
|
|
|
print("Loading cSAXS session")
|
|
from csaxs_bec.bec_ipython_client.plugins.cSAXS.cSAXS import cSAXS
|
|
csaxs = cSAXS(bec)
|
|
logger.success("cSAXS session loaded.")
|
|
|
|
|
|
if _args.session.lower() == "lamni":
|
|
from csaxs_bec.bec_ipython_client.plugins.LamNI import LamNI
|
|
|
|
_session_name = "LamNI"
|
|
lamni = LamNI(bec)
|
|
logger.success("LamNI session loaded.")
|
|
print(r"""
|
|
██████╗ ███████╗ ██████╗ ██╗ █████╗ ███╗ ███╗███╗ ██╗██╗
|
|
██╔══██╗██╔════╝██╔════╝ ██║ ██╔══██╗████╗ ████║████╗ ██║██║
|
|
██████╔╝█████╗ ██║ ██║ ███████║██╔████╔██║██╔██╗ ██║██║
|
|
██╔══██╗██╔══╝ ██║ ██║ ██╔══██║██║╚██╔╝██║██║╚██╗██║██║
|
|
██████╔╝███████╗╚██████╗ ███████╗██║ ██║██║ ╚═╝ ██║██║ ╚████║██║
|
|
╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝
|
|
|
|
B E C L a m N I
|
|
""")
|
|
|
|
elif _args.session.lower() == "omny":
|
|
from csaxs_bec.bec_ipython_client.plugins.flomni import OMNY
|
|
|
|
_session_name = "OMNY"
|
|
omny = OMNY(bec)
|
|
logger.success("OMNY session loaded.")
|
|
print(r"""
|
|
██████╗ ███████╗ ██████╗ ██████╗ ███╗ ███╗███╗ ██╗██╗ ██╗
|
|
██╔══██╗██╔════╝██╔════╝ ██╔═══██╗████╗ ████║████╗ ██║╚██╗ ██╔╝
|
|
██████╔╝█████╗ ██║ ██║ ██║██╔████╔██║██╔██╗ ██║ ╚████╔╝
|
|
██╔══██╗██╔══╝ ██║ ██║ ██║██║╚██╔╝██║██║╚██╗██║ ╚██╔╝
|
|
██████╔╝███████╗╚██████╗ ╚██████╔╝██║ ╚═╝ ██║██║ ╚████║ ██║
|
|
╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝
|
|
|
|
B E C O M N Y
|
|
""")
|
|
|
|
elif _args.session.lower() == "flomni":
|
|
from csaxs_bec.bec_ipython_client.plugins.flomni import Flomni
|
|
|
|
_session_name = "flomni"
|
|
flomni = Flomni(bec)
|
|
logger.success("flomni session loaded.")
|
|
print(r"""
|
|
██████╗ ███████╗ ██████╗ ███████╗██╗ ██████╗ ███╗ ███╗███╗ ██╗██╗
|
|
██╔══██╗██╔════╝██╔════╝ ██╔════╝██║ ██╔═══██╗████╗ ████║████╗ ██║██║
|
|
██████╔╝█████╗ ██║ █████╗ ██║ ██║ ██║██╔████╔██║██╔██╗ ██║██║
|
|
██╔══██╗██╔══╝ ██║ ██╔══╝ ██║ ██║ ██║██║╚██╔╝██║██║╚██╗██║██║
|
|
██████╔╝███████╗╚██████╗ ██║ ███████╗╚██████╔╝██║ ╚═╝ ██║██║ ╚████║██║
|
|
╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝
|
|
|
|
B E C f l O M N I
|
|
""")
|
|
|
|
|
|
# SETUP BEAMLINE INFO
|
|
from bec_ipython_client.plugins.SLS.sls_info import OperatorInfo, SLSInfo
|
|
|
|
from csaxs_bec.bec_ipython_client.plugins.cSAXS.beamline_info import BeamlineInfo
|
|
|
|
bec._beamline_mixin._bl_info_register(BeamlineInfo)
|
|
bec._beamline_mixin._bl_info_register(SLSInfo)
|
|
bec._beamline_mixin._bl_info_register(OperatorInfo)
|
|
|
|
# SETUP PROMPTS
|
|
bec._ip.prompts.session_name = _session_name
|
|
bec._ip.prompts.status = 1
|
|
|
|
# ACCOUNT MISMATCH CHECK
|
|
import os
|
|
|
|
def _check_account_mismatch():
|
|
try:
|
|
active = bec.active_account # e.g. "p23092"
|
|
system_user = os.getenv("USER") or os.getlogin() # e.g. "e23092"
|
|
if active[1:] != system_user[1:]:
|
|
print(f"""
|
|
\033[91m\033[1m
|
|
██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗
|
|
██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝
|
|
██║ █╗ ██║███████║██████╔╝██╔██╗ ██║██║██╔██╗ ██║██║ ███╗
|
|
██║███╗██║██╔══██║██╔══██╗██║╚██╗██║██║██║╚██╗██║██║ ██║
|
|
╚███╔███╔╝██║ ██║██║ ██║██║ ╚████║██║██║ ╚████║╚██████╔╝
|
|
╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═══╝ ╚═════╝
|
|
|
|
ACCOUNT MISMATCH DETECTED!
|
|
BEC active account : {active}
|
|
System user : {system_user}
|
|
|
|
Data read and written by the BEC client does not match the data account!
|
|
Please verify you are logged in with the correct account.
|
|
\033[0m""")
|
|
except Exception:
|
|
logger.warning("Failed to verify account match.")
|
|
|
|
|
|
if _args.session.lower() == "lamni" or _args.session.lower() == "flomni" or _args.session.lower() == "omny":
|
|
_check_account_mismatch() |