ckanext-comments
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:
- Install python package
pip install ckanext-comments
-
Add
commentsto theckan.pluginssetting in your CKAN config file -
Apply database migrations
ckan db upgrade -p comments
- Add
cooments/snippets/thread.htmlto yourpackage/read.htmltemplate, 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
# Require comment approval in order to make it visible
# (optional, default: true).
ckanext.comments.require_approval = false
# Editor(admin) can edit draft comments
# (optional, default: true).
ckanext.comments.draft_edits = true
# Author can edit own draft comments
# (optional, default: true).
ckanext.comments.draft_edits_by_author = false
# Editor(admin) can edit approved comments
# (optional, default: false).
ckanext.comments.approved_edits = false
# Author can edit own approved comments
# (optional, default: false).
ckanext.comments.approved_edits_by_author = false
# Number of reply levels that are shown on mobile layout
# (optional, default: 3).
ckanext.comments.mobile_depth_threshold = 3
# Include default thread implementation on the dataset page
# (optional, default: false).
ckanext.comments.enable_default_dataset_comments = true
# Register custom getter for a subject by providing a path to a function
# ckanext.comments.subject.{self.subject_type}_getter = path
# The function must accept an ID and return a model object
ckanext.comments.subject.question_getter = ckanext.msf_ask_question.model.question_getter
API
comments_thread_create
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
comments_thread_show
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
comments_thread_delete
Delete the thread.
Args:
- id(str): ID of the thread
comments_comment_create
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
comments_comment_show
Show the details of the comment
Args:
- id(str): ID of the comment
comments_comment_approve
Approve draft comment
Args:
- id(str): ID of the comment
comments_comment_delete
Remove existing comment
Args:
- id(str): ID of the comment
comments_comment_update
Update existing comment
Args:
- id(str): ID of the comment
- content(str): comment's message
Tests
To run the tests, do:
pytest
License
Metadata
Release files for ckanext-comments 0.3.1.post1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ckanext_comments-0.3.1.post1.tar.gz | 37.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ckanext_comments-0.3.1.post1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 84.7 kB
Release files / ckanext_comments-0.3.1.post1.tar.gz
| Download URL | ckanext_comments-0.3.1.post1.tar.gz |
|---|---|
| Size | 37.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e52c022badc39613b7813590f5bbf339b0031c8260a0120baf70cedae0266fb7
|
|
BLAKE2b-256 checksum How to use checksums |
d5b0dc7648a76ba744f5767d0a6853c493902d1a674f99ff9164d06999875048
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.19
|
Release files / ckanext_comments-0.3.1.post1-py3-none-any.whl
| Download URL | ckanext_comments-0.3.1.post1-py3-none-any.whl |
|---|---|
| Size | 47.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
13cdd479cd950cf39b638a579ce91864ec1fbee5bec80b234f7664f3d95332eb
|
|
BLAKE2b-256 checksum How to use checksums |
2d9a931c4a2ea68e26565c392c0d889ce14e28dd2fbfeae977138d18462364f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.19
|
Security for ckanext-comments 0.3.1.post1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.