def test_model_basics(self):
     assert model.schemata['Thing'], model.schemata
     thing = model.schemata['Thing']
     assert thing == model.get(thing)
     assert thing in list(model), list(model)
     assert 'Person' in model.to_dict(), model.to_dict()
     assert 'Thing' in model.to_dict(), model.to_dict()
Exemple #2
0
    def test_model_basics(self):
        assert model.schemata['Thing'], model.schemata
        thing = model.schemata['Thing']
        assert thing == model.get(thing)
        assert thing in list(model), list(model)
        assert 'Person' in model.to_dict(), model.to_dict()
        assert 'Thing' in model.to_dict(), model.to_dict()

        props = list(model.properties)
        assert len(props), props
        assert thing.get('name') in props, props
Exemple #3
0
def _metadata_locale(locale):
    # This is cached in part because latency on this endpoint is
    # particularly relevant to the first render being shown to a
    # user.
    auth = {}
    if settings.PASSWORD_LOGIN:
        auth["password_login_uri"] = url_for("sessions_api.password_login")
        auth["registration_uri"] = url_for("roles_api.create_code")
    if settings.OAUTH:
        auth["oauth_uri"] = url_for("sessions_api.oauth_init")

    locales = settings.UI_LANGUAGES
    locales = {loc: Locale(loc).get_language_name(loc) for loc in locales}

    return {
        "status": "ok",
        "maintenance": request.authz.in_maintenance,
        "app": {
            "title": settings.APP_TITLE,
            "version": __version__,
            "banner": settings.APP_BANNER,
            "ui_uri": settings.APP_UI_URL,
            "logo": settings.APP_LOGO,
            "favicon": settings.APP_FAVICON,
            "locale": locale,
            "locales": locales,
        },
        "categories": Collection.CATEGORIES,
        "frequencies": Collection.FREQUENCIES,
        "pages": load_pages(locale),
        "model": model.to_dict(),
        "token": None,
        "auth": auth,
    }
    def test_model_basics(self):
        assert model.schemata['Thing'], model.schemata
        thing = model.schemata['Thing']
        assert thing == model.get(thing)
        assert thing in list(model), list(model)
        assert 'Person' in model.to_dict(), model.to_dict()
        assert 'Thing' in model.to_dict(), model.to_dict()

        with assert_raises(KeyError):
            model['Banana']

        assert model.get_qname('Thing:name') == thing.get('name')

        props = list(model.properties)
        assert len(props), props
        assert thing.get('name') in props, props
Exemple #5
0
def export_metadata():
    """Export the global index for all datasets."""
    datasets = []
    for dataset in Dataset.all():
        datasets.append(dataset_to_index(dataset))

    with engine_read() as conn:
        issues = list(all_issues(conn))
        schemata = all_schemata(conn)

    issues_path = settings.DATASET_PATH.joinpath("issues.json")
    log.info("Writing global issues list", path=issues_path)
    with open(issues_path, "wb") as fh:
        data = {"issues": issues}
        write_json(data, fh)

    index_path = settings.DATASET_PATH.joinpath("index.json")
    log.info("Writing global index", datasets=len(datasets), path=index_path)
    with open(index_path, "wb") as fh:
        meta = {
            "datasets": datasets,
            "run_time": settings.RUN_TIME,
            "dataset_url": settings.DATASET_URL,
            "issues_url": urljoin(settings.DATASET_URL, "issues.json"),
            "statements_url": urljoin(settings.DATASET_URL, "statements.csv"),
            "model": model.to_dict(),
            "schemata": schemata,
            "matcher": explain_matcher(),
            "app": "opensanctions",
            "version": settings.VERSION,
        }
        write_json(meta, fh)
Exemple #6
0
async def index():
    """Get system information: the list of available dataset names, the size of
    the search index in memory, and the followthemoney model specification which
    describes the types of entities and properties in use by the API."""
    try:
        index = get_index()
        return {
            "datasets": [ds.name for ds in get_datasets()],
            "model": model.to_dict(),
            "terms": len(index.terms),
            "tokens": len(index.inverted),
        }
    finally:
        db.session.close()
Exemple #7
0
def _metadata_locale(locale):
    # This is cached in part because latency on this endpoint is
    # particularly relevant to the first render being shown to a
    # user.
    auth = {"logout": settings.APP_UI_URL}
    if settings.PASSWORD_LOGIN:
        auth["password_login_uri"] = url_for("sessions_api.password_login")
    if settings.PASSWORD_LOGIN and not settings.MAINTENANCE:
        auth["registration_uri"] = url_for("roles_api.create_code")
    if settings.OAUTH:
        auth["oauth_uri"] = url_for("sessions_api.oauth_init")
        metadata = oauth.provider.load_server_metadata()
        auth["logout"] = metadata.get("end_session_endpoint", auth["logout"])
    locales = settings.UI_LANGUAGES
    locales = {loc: Locale(loc).get_language_name(loc) for loc in locales}

    # This is dumb but we agreed it with ARIJ
    # https://github.com/alephdata/aleph/issues/1432
    app_logo = settings.APP_LOGO
    if locale.startswith("ar"):
        app_logo = settings.APP_LOGO_AR or app_logo

    return {
        "status": "ok",
        "maintenance": settings.MAINTENANCE,
        "app": {
            "title": settings.APP_TITLE,
            "version": __version__,
            "banner": settings.APP_BANNER,
            "ui_uri": settings.APP_UI_URL,
            "logo": app_logo,
            "favicon": settings.APP_FAVICON,
            "locale": locale,
            "locales": locales,
        },
        "categories": Collection.CATEGORIES,
        "frequencies": Collection.FREQUENCIES,
        "pages": load_pages(locale),
        "model": model.to_dict(),
        "token": None,
        "auth": auth,
    }
Exemple #8
0
def _metadata_locale(locale):
    # This is cached in part because latency on this endpoint is
    # particularly relevant to the first render being shown to a
    # user.
    auth = {}
    if settings.PASSWORD_LOGIN:
        auth['password_login_uri'] = url_for('sessions_api.password_login')
        auth['registration_uri'] = url_for('roles_api.create_code')
    if settings.OAUTH:
        auth['oauth_uri'] = url_for('sessions_api.oauth_init')

    locales = settings.UI_LANGUAGES
    locales = {l: Locale(l).get_language_name(l) for l in locales}

    data = {
        'status': 'ok',
        'maintenance': request.authz.in_maintenance,
        'app': {
            'title': settings.APP_TITLE,
            'description': settings.APP_DESCRIPTION,
            'version': __version__,
            'banner': settings.APP_BANNER,
            'ui_uri': settings.APP_UI_URL,
            'samples': settings.SAMPLE_SEARCHES,
            'logo': settings.APP_LOGO,
            'favicon': settings.APP_FAVICON,
            'locale': locale,
            'locales': locales
        },
        'categories': Collection.CATEGORIES,
        'frequencies': Collection.FREQUENCIES,
        'pages': load_pages(locale),
        'model': model.to_dict(),
        'token': None,
        'auth': auth
    }

    if settings.SINGLE_USER:
        role = Role.load_cli_user()
        authz = Authz.from_role(role)
        data['token'] = authz.to_token(role=role)
    return jsonify(data)
Exemple #9
0
    def test_model_basics(self):
        assert model.schemata['Thing'], model.schemata
        thing = model.schemata['Thing']
        assert thing == model.get(thing)
        assert thing in list(model), list(model)
        data = model.to_dict()
        assert 'schemata' in data, data
        assert len(data['schemata']) == len(model.schemata)
        assert 'Thing' in data['schemata']
        assert 'types' in data, data
        assert len(data['types']) == len(list(registry.types))
        assert 'name' in data['types']
        assert 'entity' in data['types']

        with assert_raises(KeyError):
            model['Banana']

        assert model.get_qname('Thing:name') == thing.get('name')

        props = list(model.properties)
        assert len(props), props
        assert thing.get('name') in props, props
    def test_model_basics(self):
        assert model.schemata["Thing"], model.schemata
        thing = model.schemata["Thing"]
        assert thing == model.get(thing)
        assert thing in list(model), list(model)
        data = model.to_dict()
        assert "schemata" in data, data
        assert len(data["schemata"]) == len(model.schemata)
        assert "Thing" in data["schemata"]
        assert "types" in data, data
        assert len(data["types"]) == len(list(registry.types))
        assert "name" in data["types"]
        assert "entity" in data["types"]

        with assert_raises(KeyError):
            model["Banana"]

        assert model.get_qname("Thing:name") == thing.get("name")

        props = list(model.properties)
        assert len(props), props
        assert thing.get("name") in props, props
Exemple #11
0
def dump_model(outfile):
    outfile.write(json.dumps(model.to_dict(), indent=2))
Exemple #12
0
def dump_model(outfile):
    outfile.write(json.dumps(model.to_dict(), indent=2, sort_keys=True))
Exemple #13
0
def dump_model(outfile: TextIO) -> None:
    outfile.write(json.dumps(model.to_dict(), indent=2, sort_keys=True))