Name | ckanext-comments JSON |
Version |
0.3.1.post1
JSON |
| download |
home_page | None |
Summary | None |
upload_time | 2024-10-17 14:32:01 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | AGPL |
keywords |
ckan
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
|
[](https://github.com/DataShades/ckanext-comments/actions/workflows/test.yml)
# 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.
```jinja2
{# 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:
1. Install python package
```sh
pip install ckanext-comments
```
1. Add `comments` to the `ckan.plugins` setting in your CKAN
config file
1. Apply database migrations
```sh
ckan db upgrade -p comments
```
1. Add `cooments/snippets/thread.html` to your `package/read.html` template, like this:
```jinja2
{% 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
```ini
# 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:
```sh
pytest
```
## License
[AGPL](https://www.gnu.org/licenses/agpl-3.0.en.html)
Raw data
{
"_id": null,
"home_page": null,
"name": "ckanext-comments",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "DataShades <datashades@linkdigital.com.au>",
"keywords": "CKAN",
"author": null,
"author_email": "DataShades <datashades@linkdigital.com.au>, Sergey Motornyuk <sergey.motornyuk@linkdigital.com.au>",
"download_url": "https://files.pythonhosted.org/packages/d5/b0/dc7648a76ba744f5767d0a6853c493902d1a674f99ff9164d06999875048/ckanext_comments-0.3.1.post1.tar.gz",
"platform": null,
"description": "[](https://github.com/DataShades/ckanext-comments/actions/workflows/test.yml)\n\n# ckanext-comments\n\nAdd comment-trees to CKAN pages.\n\nThis plugins provides comment threads linked to any of the main CKAN entities:\n\n* datasets\n* resources\n* groups\n* organizations\n* users.\n\nAll the features are API-first, so anything you can do via UI, can be done via API.\n\nNo changes to the WebUI are done by default. One have to include a snippet into\nJinja2 template in order to show the comments on a page.\n```jinja2\n{# subject_type := package | group | resource | user #}\n{% snippet 'comments/snippets/thread.html', subject_id=pkg.id, subject_type='package' %}\n```\n\n:info: For the datasets it also can be achieved by enabling\n`ckanext.comments.enable_default_dataset_comments` option.\n\n## Requirements\n\n* python >= 3.7\n* CKAN >= 2.9\n\n## Installation\n\nTo install ckanext-comments:\n\n1. Install python package\n ```sh\n pip install ckanext-comments\n ```\n\n1. Add `comments` to the `ckan.plugins` setting in your CKAN\n config file\n\n1. Apply database migrations\n ```sh\n ckan db upgrade -p comments\n ```\n\n1. Add `cooments/snippets/thread.html` to your `package/read.html` template, like this:\n ```jinja2\n {% ckan_extends %}\n\n {% block primary_content_inner %}\n {{ super() }}\n {% snippet 'comments/snippets/thread.html', subject_id=pkg.id, subject_type='package' %}\n {% endblock primary_content_inner %}\n ```\n\n## Config settings\n```ini\n\n# Require comment approval in order to make it visible\n# (optional, default: true).\nckanext.comments.require_approval = false\n\n# Editor(admin) can edit draft comments\n# (optional, default: true).\nckanext.comments.draft_edits = true\n\n# Author can edit own draft comments\n# (optional, default: true).\nckanext.comments.draft_edits_by_author = false\n\n# Editor(admin) can edit approved comments\n# (optional, default: false).\nckanext.comments.approved_edits = false\n\n# Author can edit own approved comments\n# (optional, default: false).\nckanext.comments.approved_edits_by_author = false\n\n# Number of reply levels that are shown on mobile layout\n# (optional, default: 3).\nckanext.comments.mobile_depth_threshold = 3\n\n# Include default thread implementation on the dataset page\n# (optional, default: false).\nckanext.comments.enable_default_dataset_comments = true\n\n# Register custom getter for a subject by providing a path to a function\n# ckanext.comments.subject.{self.subject_type}_getter = path\n# The function must accept an ID and return a model object\nckanext.comments.subject.question_getter = ckanext.msf_ask_question.model.question_getter\n```\n\n\n\n## API\n\n### `comments_thread_create`\nCreate a thread for the subject.\n\nArgs:\n* subject_id(str): unique ID of the commented entity\n* subject_type(str:package|resource|user|group): type of the commented entity\n\n### `comments_thread_show`\nShow the subject's thread.\n\nArgs:\n* subject_id(str): unique ID of the commented entity\n* subject_type(str:package|resource|user|group): type of the commented entity\n* init_missing(bool, optional): return an empty thread instead of 404\n* include_comments(bool, optional): show comments from the thread\n* include_author(bool, optional): show authors of the comments\n* combine_comments(bool, optional): combine comments into a tree-structure\n* after_date(str:ISO date, optional): show comments only since the given date\n\n### `comments_thread_delete`\nDelete the thread.\n\nArgs:\n* id(str): ID of the thread\n\n### `comments_comment_create`\nAdd a comment to the thread.\n\nArgs:\n* subject_id(str): unique ID of the commented entity\n* subject_type(str:package|resource|user|group): type of the commented entity\n* content(str): comment's message\n* reply_to_id(str, optional): reply to the existing comment\n* create_thread(bool, optional): create a new thread if it doesn't exist yet\n\n### `comments_comment_show`\nShow the details of the comment\n\nArgs:\n* id(str): ID of the comment\n\n### `comments_comment_approve`\nApprove draft comment\n\nArgs:\n* id(str): ID of the comment\n\n### `comments_comment_delete`\nRemove existing comment\n\nArgs:\n* id(str): ID of the comment\n\n### `comments_comment_update`\nUpdate existing comment\n\nArgs:\n* id(str): ID of the comment\n* content(str): comment's message\n\n\n## Tests\n\nTo run the tests, do:\n```sh\npytest\n```\n\n\n## License\n\n[AGPL](https://www.gnu.org/licenses/agpl-3.0.en.html)\n",
"bugtrack_url": null,
"license": "AGPL",
"summary": null,
"version": "0.3.1.post1",
"project_urls": {
"Homepage": "https://github.com/DataShades/ckanext-comments"
},
"split_keywords": [
"ckan"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2d9a931c4a2ea68e26565c392c0d889ce14e28dd2fbfeae977138d18462364f7",
"md5": "a075d3468c0b697c4d799708ecb4f036",
"sha256": "13cdd479cd950cf39b638a579ce91864ec1fbee5bec80b234f7664f3d95332eb"
},
"downloads": -1,
"filename": "ckanext_comments-0.3.1.post1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a075d3468c0b697c4d799708ecb4f036",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 47051,
"upload_time": "2024-10-17T14:31:59",
"upload_time_iso_8601": "2024-10-17T14:31:59.439059Z",
"url": "https://files.pythonhosted.org/packages/2d/9a/931c4a2ea68e26565c392c0d889ce14e28dd2fbfeae977138d18462364f7/ckanext_comments-0.3.1.post1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d5b0dc7648a76ba744f5767d0a6853c493902d1a674f99ff9164d06999875048",
"md5": "161106beee8213122c98273ad4c140ba",
"sha256": "e52c022badc39613b7813590f5bbf339b0031c8260a0120baf70cedae0266fb7"
},
"downloads": -1,
"filename": "ckanext_comments-0.3.1.post1.tar.gz",
"has_sig": false,
"md5_digest": "161106beee8213122c98273ad4c140ba",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 37695,
"upload_time": "2024-10-17T14:32:01",
"upload_time_iso_8601": "2024-10-17T14:32:01.653355Z",
"url": "https://files.pythonhosted.org/packages/d5/b0/dc7648a76ba744f5767d0a6853c493902d1a674f99ff9164d06999875048/ckanext_comments-0.3.1.post1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-17 14:32:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "DataShades",
"github_project": "ckanext-comments",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [],
"lcname": "ckanext-comments"
}