
Add comment-trees to CKAN pages.
This plugins provides comment threads linked to any of the main CKAN entities:
- datasets
- resources
- groups
- organizations
- users.
All the features are API-first, so anything you can do via UI, can be done via API.
No changes to the WebUI are done by default. One have to include a snippet into
Jinja2 template in order to show the comments on a page.
{# subject_type := package | group | resource | user #}
{% snippet 'comments/snippets/thread.html', subject_id=pkg.id, subject_type='package' %}
:info: For the datasets it also can be achieved by enabling
ckanext.comments.enable_default_dataset_comments
option.
Requirements
- python >= 3.7
- CKAN >= 2.9
Installation
To install ckanext-comments:
pip install ckanext-comments
ckan db upgrade -p comments
- Add
cooments/snippets/thread.html
to your package/read.html
template, like this:
{% ckan_extends %}
{% block primary_content_inner %}
{{ super() }}
{% snippet 'comments/snippets/thread.html', subject_id=pkg.id, subject_type='package' %}
{% endblock primary_content_inner %}
Config settings
ckanext.comments.require_approval = false
ckanext.comments.draft_edits = true
ckanext.comments.draft_edits_by_author = false
ckanext.comments.approved_edits = false
ckanext.comments.approved_edits_by_author = false
ckanext.comments.mobile_depth_threshold = 3
ckanext.comments.enable_default_dataset_comments = true
ckanext.comments.subject.question_getter = ckanext.msf_ask_question.model.question_getter
API
Create a thread for the subject.
Args:
- subject_id(str): unique ID of the commented entity
- subject_type(str:package|resource|user|group): type of the commented entity
Show the subject's thread.
Args:
- subject_id(str): unique ID of the commented entity
- subject_type(str:package|resource|user|group): type of the commented entity
- init_missing(bool, optional): return an empty thread instead of 404
- include_comments(bool, optional): show comments from the thread
- include_author(bool, optional): show authors of the comments
- combine_comments(bool, optional): combine comments into a tree-structure
- after_date(str:ISO date, optional): show comments only since the given date
Delete the thread.
Args:
- id(str): ID of the thread
Add a comment to the thread.
Args:
- subject_id(str): unique ID of the commented entity
- subject_type(str:package|resource|user|group): type of the commented entity
- content(str): comment's message
- reply_to_id(str, optional): reply to the existing comment
- create_thread(bool, optional): create a new thread if it doesn't exist yet
Show the details of the comment
Args:
- id(str): ID of the comment
Approve draft comment
Args:
- id(str): ID of the comment
Remove existing comment
Args:
- id(str): ID of the comment
Update existing comment
Args:
- id(str): ID of the comment
- content(str): comment's message
Tests
To run the tests, do:
pytest
License
AGPL