def project_get_or_create(multi_session_force_recreate=False): """ Return existed or create new project based on environment. Currently supported methods: - "fixed": project is based on "project_name" attribute specified by input args when app starts - "session": project is based on "project_name" key restored from flask.session object :return: """ if input_args.command == 'start-multi-session': # get user from session if 'user' not in session: session['user'] = str(uuid4()) user = session['user'] # get project from session if 'project' not in session or multi_session_force_recreate: session['project'] = str(uuid4()) project = session['project'] project_name = user + '/' + project return Project.get_or_create(project_name, input_args, context={ 'multi_session': True, 'user': convert_string_to_hash(user) }) else: if multi_session_force_recreate: raise NotImplementedError( '"multi_session_force_recreate" option supported only with "start-multi-session" mode' ) return Project.get_or_create(input_args.project_name, input_args, context={'multi_session': False})
def project_get_or_create(): """ Return existed or create new project based on environment. Currently supported methods: - "fixed": project is based on "project_name" attribute specified by input args when app starts - "session": project is based on "project_name" key restored from flask.session object :return: """ if input_args.command == 'start-multi-session': if 'project_name' in session: project_name = session['project_name'] else: project_name = str(uuid4()) session['project_name'] = project_name return Project.get_or_create(project_name, input_args) else: return Project.get_or_create(input_args.project_name, input_args)
def project_get_or_create(multi_session_force_recreate=False): """ Return existed or create new project based on environment. Currently supported methods: - "fixed": project is based on "project_name" attribute specified by input args when app starts - "session": project is based on "project_name" key restored from flask.session object :param multi_session_force_recreate: create a new project if True :return: project """ input_args = current_app.label_studio.input_args if input_args and input_args.command == 'start-multi-session': # get user from session if 'user' not in session: session['user'] = str(uuid4()) user = session['user'] g.user = user # get project from session if 'project' not in session or multi_session_force_recreate: session['project'] = str(uuid4()) project = session['project'] # check for shared projects and get owner user if project in session.get('shared_projects', []): owner = Project.get_user_by_project(project, input_args.root_dir) if owner is None: # owner is None when project doesn't exist raise Exception( 'No such shared project found: project_uuid = ' + project) else: user = owner project_name = user + '/' + project return Project.get_or_create(project_name, input_args, context={ 'multi_session': True, 'user': convert_string_to_hash(user.encode()) }) else: if multi_session_force_recreate: raise NotImplementedError( '"multi_session_force_recreate" option supported only with "start-multi-session" mode' ) return Project.get_or_create(input_args.project_name, input_args, context={'multi_session': False})
def goc_project(): """monkeypatch for get_or_create_project""" project_name = "my_project" user = "******" input_args_dict = {"root_dir": os.path.join(os.path.dirname(__file__), "../../")} input_args = SimpleNamespace(**input_args_dict) project = Project.get_or_create( project_name, input_args, context={"multi_session": False} ) return project
def goc_project(): """monkeypatch for get_or_create_project""" project_name = 'my_project' user = '******' input_args_dict = { 'root_dir': os.path.join(os.path.dirname(__file__), '../../') } input_args = SimpleNamespace(**input_args_dict) project = Project.get_or_create(project_name, input_args, context={ 'multi_session': False }) return project
def project_get_or_create(multi_session_force_recreate=False): """ Return existed or create new project based on environment. Currently supported methods: - "fixed": project is based on "project_name" attribute specified by input args when app starts - "session": project is based on "project_name" key restored from flask.session object :return: """ print("Project get or create") if input_args.command == 'start-multi-session': # get user from session if 'user' not in session: session['user'] = str(uuid4()) user = session['user'] # get project from session if 'project' not in session or multi_session_force_recreate: session['project'] = str(uuid4()) project = session['project'] project_name = user + '/' + project return Project.get_or_create(project_name, input_args, context={ 'user': user, 'project': project, 'multi_session': True, }) else: # if multi_session_force_recreate: # raise NotImplementedError( # '"multi_session_force_recreate" option supported only with "start-multi-session" mode') user = project = input_args.project_name # in standalone mode, user and project are singletons and consts return Project.get_or_create(input_args.project_name, input_args, context={ 'user': user, 'project': project, 'multi_session': False })