Full table of contentsΒΆ
- User guide
 - Sysadmin guide
 - Maintainer’s guide
- Installing CKAN
- Installing CKAN from package
 - Installing CKAN from source
 - Deploying a source install
- 1. Create a production.ini File
 - 2. Install Apache, modwsgi, modrpaf
 - 3. Install Nginx
 - 4. Install an email server
 - 5. Create the WSGI script file
 - 6. Create the Apache config file
 - 7. Modify the Apache ports.conf file
 - 8. Create the Nginx config file
 - 9. Enable your CKAN site
 - 10. Setup a worker for background jobs
 - Troubleshooting
 
 
 - Upgrading CKAN
- CKAN releases
 - Upgrading CKAN
 
 - Getting started
 - Database Management
 - Command Line Interface
- Troubleshooting Paster Commands
 - Paster Commands Reference
- check-po-files: Check po files for common mistakes
 - color: Create or remove a color scheme
 - create-test-data: Create test data
 - dataset: Manage datasets
 - datastore: Perform commands to set up the datastore
 - db: Manage databases
 - front-end-build: Creates and minifies css and JavaScript files
 - jobs: Manage background jobs
 - less: Compile all root less documents into their CSS counterparts
 - minify: Create minified versions of the given Javascript and CSS files
 - notify: Send out modification notifications
 - plugin-info: Provide info on installed plugins
 - profile: Code speed profiler
 - ratings: Manage dataset ratings
 - rdf-export: Export datasets as RDF
 - search-index: Rebuild search index
 - sysadmin: Give sysadmin rights
 - tracking: Update tracking statistics
 - trans: Translation helper functions
 - user: Create and manage users
 
 
 - Organizations and authorization
- Organizations
 - Configuration File Options
- 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
 
 - Extensions
 
 - 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
 - CKAN configuration file
- General Settings
 - Repoze.who Settings
 - 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
 
 - Search Settings
 - 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.main_css
 - ckan.favicon
 - ckan.legacy_templates
 - ckan.datasets_per_page
 - package_hide_extras
 - ckan.dumps_url
 - ckan.dumps_format
 - ckan.recaptcha.version
 - ckan.recaptcha.publickey
 - ckan.recaptcha.privatekey
 - ckan.featured_groups
 - ckan.featured_orgs
 - ckan.gravatar_default
 - ckan.debug_supress_header
 
 - Resource Views Settings
 - Theming Settings
 - Storage Settings
 - DataPusher Settings
 - User Settings
 - Activity Streams Settings
 - Feeds Settings
 - Internationalisation Settings
 - Form Settings
 - Email Settings
 
 
 
 - Installing CKAN
 - 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
 - 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
 
 - Customizing dataset and resource metadata fields using IDatasetForm
 - Plugin interfaces reference
 - Plugins toolkit reference
 - Validator functions reference
 - Internationalizing strings in extensions
 
 - 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 Fanstatic
 - 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
- Transitioning from legacy to new tests
 - Guidelines for writing new-style 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
 - 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.migration tests
 - Writing ckan.ckanext tests
 
 
 
 - Frontend development guidelines
- Templating
 - Resources
 - 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