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
- Upgrading CKAN
- CKAN releases
- Upgrading CKAN
- Getting started
- Database Management
- Command Line Interface
- Troubleshooting Paster Commands
- Paster Commands Reference
- celeryd: Control celery daemon
- 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
- 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 tasks
- 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
- 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
- Multicore Solr setup
- 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
- Names of config settings should include the name of the extension
- 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
- Don’t use
c - Use
url_for() - Use
{% trans %},{% pluralize %},_()andungettext() - Helper function names should begin with the name of the extension
- Snippet filenames should begin with the name of the extension
- JavaScript modules names should begin with the name of the extension
- JavaScript modules should have docstrings
- JavaScript modules should unsubscribe from events in
teardown() - Don’t overuse pubsub
- Use
{% snippet %}, not{% include %} - Snippets should have docstrings
- Don’t use
- 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
- Encapsulate SQLAlchemy in
ckan.model - Don’t pass ORM objects to templates
- Always go through the action functions
- Action functions are exposed in the API
- Use
get_action() - Auth functions and
check_access() logic.get_or_bust()- Validation and
ckan.logic.schema - Controller & template helper functions
- Deprecation
- Encapsulate SQLAlchemy in
- 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
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.migrationtests - Writing
ckan.ckanexttests
- Creating test objects:
- 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