コード例 #1
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()
コード例 #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
コード例 #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,
    }
コード例 #4
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()

        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
コード例 #5
0
ファイル: metadata.py プロジェクト: nightsh/opennames
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)
コード例 #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()
コード例 #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,
    }
コード例 #8
0
ファイル: base_api.py プロジェクト: djoffrey/aleph
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)
コード例 #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
コード例 #10
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
コード例 #11
0
def dump_model(outfile):
    outfile.write(json.dumps(model.to_dict(), indent=2))
コード例 #12
0
ファイル: cli.py プロジェクト: vishalbelsare/followthemoney
def dump_model(outfile):
    outfile.write(json.dumps(model.to_dict(), indent=2, sort_keys=True))
コード例 #13
0
def dump_model(outfile: TextIO) -> None:
    outfile.write(json.dumps(model.to_dict(), indent=2, sort_keys=True))