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
Exemplo n.º 2
0
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()