def test_ml_backend_connections( business_client, label_config, connection_model_names_and_schemas, total_expected_connections, create_label_config_form_onboarding ): if create_label_config_form_onboarding: project = Project(title='test_ml_backend_connections', label_config=label_config) project.created_by = business_client.user project.save() else: project = Project.objects.create( title='test_ml_backend_connections', created_by=business_client.user) r = business_client.patch( f'/api/projects/{project.id}/', data=json.dumps({'label_config': label_config}), content_type='application/json', ) assert r.status_code == 200 conns = MLBackendConnection.objects.filter(project=project.id) assert conns.count() == total_expected_connections for conn in conns: assert conn.ml_backend.name in connection_model_names_and_schemas schemas = connection_model_names_and_schemas[conn.ml_backend.name] if isinstance(schemas, list): assert any(schema == conn.schema for schema in schemas) else: assert schemas == conn.schema
def add_co_project(project_uuid: str) -> None: """ Run after CoPeople, COUs and CoPersonRoles have been updated """ ns_project = Project.objects.filter(uuid=project_uuid).first() if ns_project: logger.info('{0} - Found Project: UUID = {1}'.format( datetime.datetime.now().ctime(), project_uuid)) else: logger.info('{0} - Add Project: UUID = {1}'.format( datetime.datetime.now().ctime(), project_uuid)) co_cou = ComanageCou.objects.filter( name=project_uuid + os.getenv('COU_FLAG_PI_ADMIN')).first() # create project ns_project = Project() ns_project.uuid = uuid.UUID(project_uuid) ns_project.name = co_cou.description ns_project.description = co_cou.description + ' (description autogenerated by initialization script)' ns_project.is_public = False ns_project.save() # add pi_admins pi_admins = NotaryServiceUser.objects.filter( roles__co_cou__name=project_uuid + os.getenv('COU_FLAG_PI_ADMIN')).all() if pi_admins: for pi_admin in pi_admins: logger.info('{0} - Add ADMIN User: {1}'.format( datetime.datetime.now().ctime(), pi_admin.display_name)) ns_project.comanage_pi_admins.add(pi_admin) if not ns_project.created_by: ns_project.created_by = pi_admin.email ns_project.save() # add pi_members pi_members = NotaryServiceUser.objects.filter( roles__co_cou__name=project_uuid + os.getenv('COU_FLAG_PI_MEMBER')).all() if pi_members: for pi_member in pi_members: logger.info('{0} - Add PI User: {1}'.format( datetime.datetime.now().ctime(), pi_member.display_name)) ns_project.comanage_pi_members.add(pi_member) ns_project.save() # add staff staff = NotaryServiceUser.objects.filter( roles__co_cou__name=project_uuid + os.getenv('COU_FLAG_STAFF')).all() if staff: for s in staff: logger.info('{0} - Add STAFF User: {1}'.format( datetime.datetime.now().ctime(), s.display_name)) ns_project.comanage_staff.add(s) ns_project.save()