Full table of contents
- User guide
- Sysadmin guide
- Maintainer’s guide
- CKAN releases
- Installing CKAN
- Package install
- Source install
- Docker Compose install
- Installing CKAN from package
- Installing CKAN from source
- Deploying a source install
- Upgrading CKAN
- Getting started
- Database Management
- Command Line Interface (CLI)
- Troubleshooting ckan Commands
- ckan Commands Reference
- asset: WebAssets commands
- config: Search, validate, describe config options
- config-tool: Tool for editing options in a CKAN config file
- datapusher: Perform commands in the datapusher
- dataset: Manage datasets
- datastore: Perform commands in the datastore
- db: Manage databases
- generate: Scaffolding for regular development tasks
- jobs: Manage background jobs
- sass: Compile all root sass documents into their CSS counterparts
- notify: Send out modification notifications
- plugin-info: Provide info on installed plugins
- profile: Code speed profiler
- run: Start Development server
- search-index: Search index commands
- search-index: Rebuild search index
- sysadmin: Give sysadmin rights
- tracking: Update tracking statistics
- translation: Translation helper functions
- user: Create and manage users
- views: Create views on relevant resources
- Organizations and authorization
- Data preview and visualization
- FileStore and file uploads
- DataStore extension
- Apps & Ideas
- Tag Vocabularies
- Form Integration
- Linked Data and RDF
- Background jobs
- Email notifications
- Page View Tracking
- Multilingual Extension
- Stats Extension
- Configuration Options
- Environment variables
- Updating configuration options during runtime
- Config declaration
- CKAN configuration file
- Default settings
- General settings
- Development settings
- Session settings
- ckan.user.last_active_interval
- beaker.session.key
- beaker.session.secret
- beaker.session.auto
- beaker.session.cookie_expires
- beaker.session.cookie_domain
- beaker.session.save_accessed_time
- beaker.session.secure
- beaker.session.timeout
- beaker.session.type
- beaker.session.validate_key
- beaker.session.httponly
- beaker.session.samesite
- Database settings
- Site Settings
- Authorization Settings
- ckan.auth.anon_create_dataset
- ckan.auth.create_unowned_dataset
- ckan.auth.create_dataset_if_not_in_organization
- ckan.auth.user_create_groups
- ckan.auth.user_create_organizations
- ckan.auth.user_delete_groups
- ckan.auth.user_delete_organizations
- ckan.auth.create_user_via_api
- ckan.auth.create_user_via_web
- ckan.auth.roles_that_cascade_to_sub_groups
- ckan.auth.public_user_details
- ckan.auth.public_activity_stream_detail
- ckan.auth.allow_dataset_collaborators
- ckan.auth.allow_admin_collaborators
- ckan.auth.allow_collaborators_to_change_owner_org
- ckan.auth.create_default_api_keys
- ckan.auth.login_view
- ckan.auth.reveal_private_datasets
- ckan.auth.enable_cookie_auth_in_api
- ckan.auth.route_after_login
- CSRF Protection
- Flask-Login Remember me cookie settings
- API Token Settings
- Search Settings
- ckan.site_id
- solr_url
- solr_user
- solr_password
- ckan.search.remove_deleted_packages
- ckan.search.solr_commit
- ckan.search.solr_allowed_query_parsers
- ckan.search.show_all_types
- ckan.search.default_include_private
- ckan.search.default_package_sort
- search.facets.limit
- search.facets.default
- ckan.extra_resource_fields
- ckan.search.rows_max
- ckan.group_and_organization_list_max
- ckan.group_and_organization_list_all_fields_max
- solr_timeout
- Redis Settings
- CORS Settings
- Plugins Settings
- Front-End Settings
- ckan.site_title
- ckan.site_description
- ckan.site_intro_text
- ckan.site_logo
- ckan.site_about
- ckan.theme
- ckan.favicon
- ckan.datasets_per_page
- package_hide_extras
- ckan.dumps_url
- ckan.dumps_format
- ckan.recaptcha.publickey
- ckan.recaptcha.privatekey
- ckan.featured_groups
- ckan.featured_orgs
- ckan.default_group_sort
- ckan.gravatar_default
- ckan.debug_supress_header
- ckan.homepage_style
- ckan.site_custom_css
- Resource Views Settings
- Theming Settings
- Storage Settings
- Uploader Settings
- Webassets Settings
- User Settings
- Activity Streams Settings
- Feeds Settings
- Internationalisation Settings
- Form Settings
- Email settings
- Background Job Settings
- Resource Proxy settings
- text_view settings
- image_view settings
- recline_view settings
- datatables_view settings
- Datastore settings
- ckan.datastore.write_url
- ckan.datastore.read_url
- ckan.datastore.sqlsearch.allowed_functions_file
- ckan.datastore.sqlsearch.enabled
- ckan.datastore.search.rows_default
- ckan.datastore.search.rows_max
- ckan.datastore.sqlalchemy.<OPTION>
- ckan.datastore.default_fts_lang
- ckan.datastore.default_fts_index_method
- Datapusher settings
- API guide
- Extending guide
- Writing extensions tutorial
- Using custom config settings in extensions
- Making configuration options runtime-editable
- Testing extensions
- Best practices for writing extensions
- Follow CKAN’s coding standards
- Use the plugins toolkit instead of importing CKAN
- Don’t edit CKAN’s database tables
- Use migrations when introducing new models
- Declare models using shared metadata
- Implement each plugin class in a separate Python module
- Avoid name clashes
- Internationalize user-visible strings
- Add third party libraries to requirements.txt
- Do not automatically modify the database structure
- Implementing CSRF protection
- Customizing dataset and resource metadata fields using IDatasetForm
- Plugin interfaces reference
- Plugins toolkit reference
- Validator functions reference
- Internationalizing strings in extensions
- Migration from Pylons to Flask
- Signals
- Theming guide
- Customizing CKAN’s templates
- Creating a CKAN extension
- Replacing a default template file
- Jinja2
- Extending templates with
{% ckan_extends %}
- Replacing template blocks with
{% block %}
- Extending parent blocks with Jinja’s
{{ super() }}
- Template helper functions
- Adding your own template helper functions
- Template snippets
- Adding your own template snippets
- HTML tags and CSS classes
- Accessing custom config settings from templates
- Adding static files
- Customizing CKAN’s CSS
- Adding CSS and JavaScript files using Webassets
- Customizing CKAN’s JavaScript
- Best practices for writing CKAN themes
- Custom Jinja2 tags reference
- Variables and functions available to templates
- Objects and methods available to JavaScript modules
- Template helper functions reference
- Template snippets reference
- JavaScript sandbox reference
- JavaScript API client reference
- CKAN jQuery plugins reference
- Customizing CKAN’s templates
- Contributing guide
- Reporting issues
- Translating CKAN
- Testing CKAN
- Writing commit messages
- Making a pull request
- Reviewing and merging a pull request
- Writing documentation
- Projects for beginner CKAN developers
- CKAN code architecture
- CSS coding standards
- HTML coding standards
- JavaScript coding standards
- Python coding standards
- String internationalization
- Unicode handling
- Testing coding standards
- Guidelines for writing tests
- How should tests be organized?
- Recipe for a test method
- How detailed should tests be?
- Creating test objects:
ckan.tests.factories
- Test helper functions:
ckan.tests.helpers
- Pytest fixtures
- Mocking: the
mock
library - Writing
ckan.logic.action
tests - Writing
ckan.logic.auth
tests - Writing converter and validator tests
- No tests for
ckan.logic.schema.py
- Writing
ckan.controllers
tests - Writing
ckan.model
tests - Writing
ckan.lib
tests - Writing
ckan.plugins
tests - Writing
ckan.ckanext
tests
- Creating test objects:
- Guidelines for writing tests
- Frontend development guidelines
- Templating
- Assets
- Creating a new template
- Template Blocks
- Blocks in page.html
- Blocks in base.html
- Building a JavaScript Module
- Install frontend dependencies
- File structure
- Stylesheets
- JavaScript
- Database migrations
- Upgrading CKAN’s dependencies
- Doing a CKAN release
- Changelog