Example #1
0
    def test_normalize_no_effect(self):
        decl = Declaration()
        decl.declare_int(Key().a, "10")

        cfg = CKANConfig()
        assert not decl.normalize(cfg)
        assert cfg == CKANConfig()
Example #2
0
 def declare_config_options(self, declaration: Declaration, key: Key):
     datapusher = key.ckan.datapusher
     declaration.annotate("Datapusher settings")
     declaration.declare_list(datapusher.formats, _default_formats)
     declaration.declare(datapusher.url)
     declaration.declare(datapusher.callback_url_base)
     declaration.declare_int(datapusher.assume_task_stale_after, 3600)
Example #3
0
    def declare_config_options(self, declaration: Declaration, option: Key):
        proxy = option.ckan.resource_proxy
        declaration.annotate("Resource Proxy settings")

        declaration.declare_int(proxy.max_file_size, 1048576).set_description(
            "Preview size limit, default: 1MB")
        declaration.declare_int(proxy.chunk_size, 4096).set_description(
            "Size of chunks to read/write.")
Example #4
0
    def test_normalize_in_normalized_mode(self):
        decl = Declaration()
        decl.declare_int(Key().a, "10")

        cfg = CKANConfig({"config.mode": "strict"})
        assert decl.normalize(cfg)
        # in non-safe mode default value has no effect
        assert cfg == CKANConfig({"config.mode": "strict"})

        cfg = CKANConfig({"config.mode": "strict", "a": "10"})
        assert decl.normalize(cfg)
        assert cfg == CKANConfig({"config.mode": "strict", "a": 10})
Example #5
0
    def declare_config_options(self, declaration: Declaration, key: Key):
        section = key.ckan.datatables

        declaration.annotate("datatables_view settings")

        declaration.declare_list(section.page_length_choices, [
            20, 50, 100, 500, 1000
        ]).set_description(
            "https://datatables.net/examples/advanced_init/length_menu.html")
        declaration.declare_bool(section.state_saving, True)
        declaration.declare_int(section.state_duration, 7200)
        declaration.declare_bool(section.data_dictionary_labels, True)
        declaration.declare_int(section.ellipsis_length, 100)
        declaration.declare(section.date_format, "llll").set_description(
            "see Moment.js cheatsheet https://devhints.io/moment")
        declaration.declare(section.default_view, "table")
Example #6
0
    def declare_config_options(self, declaration: Declaration, key: Key):
        section = key.ckan.datastore

        declaration.annotate("Datastore settings")
        declaration.declare(
            section.write_url,
            "postgresql://*****:*****@localhost/datastore_default"
        ).required()
        declaration.declare(
            section.read_url,
            "postgresql://*****:*****@localhost/datastore_default"
        ).required()

        declaration.declare(section.sqlsearch.allowed_functions_file,
                            _SQL_FUNCTIONS_ALLOWLIST_FILE)
        declaration.declare_bool(section.sqlsearch.enabled, False)
        declaration.declare_int(section.search.rows_default, 100)
        declaration.declare_int(section.search.rows_max, 32000)
        declaration.declare_dynamic(section.sqlalchemy.dynamic("OPTION"))

        declaration.annotate("PostgreSQL' full-text search parameters")
        declaration.declare(section.default_fts_lang, "english")
        declaration.declare(section.default_fts_index_method, "gist")
Example #7
0
 def declare_config_options(self, declaration: Declaration, key: Key):
     declaration.annotate("expire_api_token plugin")
     key = key.expire_api_token.default_lifetime
     declaration.declare_int(key, 3600)