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.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 
mocklibrary - Writing 
ckan.logic.actiontests - Writing 
ckan.logic.authtests - Writing converter and validator tests
 - No tests for 
ckan.logic.schema.py - Writing 
ckan.controllerstests - Writing 
ckan.modeltests - Writing 
ckan.libtests - Writing 
ckan.pluginstests - Writing 
ckan.ckanexttests 
 - 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