ckanext-comments


Nameckanext-comments JSON
Version 0.3.1 PyPI version JSON
download
home_pagehttps://github.com/DataShades/ckanext-comments
Summary
upload_time2023-10-25 11:34:47
maintainer
docs_urlNone
authorSergey Motornyuk
requires_python>=3.8
licenseAGPL
keywords ckan
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            [![Tests](https://github.com/DataShades/ckanext-comments/actions/workflows/test.yml/badge.svg)](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": "https://github.com/DataShades/ckanext-comments",
    "name": "ckanext-comments",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "CKAN",
    "author": "Sergey Motornyuk",
    "author_email": "sergey.motornyuk@linkdigital.com.au",
    "download_url": "https://files.pythonhosted.org/packages/48/04/54b8d816651fb6ab85d8e9c6bcea92ad80c6a4ff7c64be01e51cbea5a0d7/ckanext-comments-0.3.1.tar.gz",
    "platform": null,
    "description": "[![Tests](https://github.com/DataShades/ckanext-comments/actions/workflows/test.yml/badge.svg)](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": "",
    "version": "0.3.1",
    "project_urls": {
        "Homepage": "https://github.com/DataShades/ckanext-comments"
    },
    "split_keywords": [
        "ckan"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7b311a12c5a4c7ef2fb15a8a3c0b5f39bcd5ef043508ad6d8f66dde80822d276",
                "md5": "03f7e5a899c22da6c89a7bf17b975b7b",
                "sha256": "f247fb924cf87e354185c129615e4a0996590b1ab3abd83ee588eeb498a83066"
            },
            "downloads": -1,
            "filename": "ckanext_comments-0.3.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "03f7e5a899c22da6c89a7bf17b975b7b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 47205,
            "upload_time": "2023-10-25T11:34:44",
            "upload_time_iso_8601": "2023-10-25T11:34:44.996685Z",
            "url": "https://files.pythonhosted.org/packages/7b/31/1a12c5a4c7ef2fb15a8a3c0b5f39bcd5ef043508ad6d8f66dde80822d276/ckanext_comments-0.3.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "480454b8d816651fb6ab85d8e9c6bcea92ad80c6a4ff7c64be01e51cbea5a0d7",
                "md5": "f642c3ee1105f270a43df55a5474f82f",
                "sha256": "a166b083f9a16de0a6e3b0e3b6853cececcd769366963edf03b1e02d92bf85d8"
            },
            "downloads": -1,
            "filename": "ckanext-comments-0.3.1.tar.gz",
            "has_sig": false,
            "md5_digest": "f642c3ee1105f270a43df55a5474f82f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 37567,
            "upload_time": "2023-10-25T11:34:47",
            "upload_time_iso_8601": "2023-10-25T11:34:47.145999Z",
            "url": "https://files.pythonhosted.org/packages/48/04/54b8d816651fb6ab85d8e9c6bcea92ad80c6a4ff7c64be01e51cbea5a0d7/ckanext-comments-0.3.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-25 11:34:47",
    "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"
}
        
Elapsed time: 0.14184s