ckanext-contact


Nameckanext-contact JSON
Version 2.4.3 PyPI version JSON
download
home_pageNone
SummaryA CKAN extension for adding popup contact forms to pages.
upload_time2024-11-04 11:36:48
maintainerNone
docs_urlNone
authorNone
requires_python>=3.6
licenseGPL-3.0-or-later
keywords ckan data contact
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            <!--header-start-->
<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://data.nhm.ac.uk/images/nhm_logo.svg">
  <source media="(prefers-color-scheme: light)" srcset="https://data.nhm.ac.uk/images/nhm_logo_black.svg">
  <img alt="The Natural History Museum logo." src="https://data.nhm.ac.uk/images/nhm_logo_black.svg" align="left" width="150px" height="100px" hspace="40">
</picture>

# ckanext-contact

[![Tests](https://img.shields.io/github/actions/workflow/status/NaturalHistoryMuseum/ckanext-contact/tests.yml?style=flat-square)](https://github.com/NaturalHistoryMuseum/ckanext-contact/actions/workflows/tests.yml)
[![Coveralls](https://img.shields.io/coveralls/github/NaturalHistoryMuseum/ckanext-contact/main?style=flat-square)](https://coveralls.io/github/NaturalHistoryMuseum/ckanext-contact)
[![CKAN](https://img.shields.io/badge/ckan-2.9.7-orange.svg?style=flat-square)](https://github.com/ckan/ckan)
[![Python](https://img.shields.io/badge/python-3.6%20%7C%203.7%20%7C%203.8-blue.svg?style=flat-square)](https://www.python.org/)
[![Docs](https://img.shields.io/readthedocs/ckanext-contact?style=flat-square)](https://ckanext-contact.readthedocs.io)

_A CKAN extension for adding popup contact forms to pages._

<!--header-end-->

# Overview

<!--overview-start-->
Borrows much of the contact form code from [ckanext-surrey](https://github.com/CityofSurrey/ckanext-surrey).

An example can be seen on the Natural History Museum's [Data Portal](https://data.nhm.ac.uk) when clicking "_Contact dataset curator._"

This extension now includes Google's [reCAPTCHA](https://www.google.com/recaptcha) for preventing spam submissions.

<!--overview-end-->

# Installation

<!--installation-start-->
Path variables used below:
- `$INSTALL_FOLDER` (i.e. where CKAN is installed), e.g. `/usr/lib/ckan/default`
- `$CONFIG_FILE`, e.g. `/etc/ckan/default/development.ini`

## Installing from PyPI

```shell
pip install ckanext-contact
```

## Installing from source

1. Clone the repository into the `src` folder:
   ```shell
   cd $INSTALL_FOLDER/src
   git clone https://github.com/NaturalHistoryMuseum/ckanext-contact.git
   ```

2. Activate the virtual env:
   ```shell
   . $INSTALL_FOLDER/bin/activate
   ```

3. Install via pip:
   ```shell
   pip install $INSTALL_FOLDER/src/ckanext-contact
   ```

### Installing in editable mode

Installing from a `pyproject.toml` in editable mode (i.e. `pip install -e`) requires `setuptools>=64`; however, CKAN 2.9 requires `setuptools==44.1.0`. See [our CKAN fork](https://github.com/NaturalHistoryMuseum/ckan) for a version of v2.9 that uses an updated setuptools if this functionality is something you need.

## Post-install setup

1. Add 'contact' to the list of plugins in your `$CONFIG_FILE`:
   ```ini
   ckan.plugins = ... contact
   ```

2. To use reCAPTCHA, you must register a site with the Google [reCAPTCHA](https://www.google.com/recaptcha) service and add your API key and secret in the [configuration](#configuration).

<!--installation-end-->

# Configuration

<!--configuration-start-->
These are the options that can be specified in your .ini config file.

## Email

| Name                                       | Description                                       | Default                         |
|--------------------------------------------|---------------------------------------------------|---------------------------------|
| `ckanext.contact.mail_to`                  | Email address to submit to                        | `email_to`                      |
| `ckanext.contact.recipient_name`           | Name of the recipient                             | `ckan.site_title`               |
| `ckanext.contact.subject`                  | Email subject for the submitted form              | 'Contact/Question from visitor' |
| `ckanext.contact.add_timestamp_to_subject` | Whether to append a timestamp to the subject line | `false`                         |
| `ckanext.contact.subject_prefix`           | A prefix to add to the subject before sending     | ''                              |

## Recaptcha

| Name                                  | Description                              | Default               |
|---------------------------------------|------------------------------------------|-----------------------|
| `ckanext.contact.recaptcha_v3_key`    | API key for the reCAPTCHA service.       | False (i.e. disabled) |
| `ckanext.contact.recaptcha_v3_secret` | API secret for the reCAPTCHA service.    | False (i.e. disabled) |
| `ckanext.contact.recaptcha_v3_action` | `data-module-action` for the form/button |                       |

## Other

| Name                          | Description                                                                                          | Default             |
|-------------------------------|------------------------------------------------------------------------------------------------------|---------------------|
| `ckanext.contact.check_email` | Set to False to disable checking email addresses via [pyIsEmail](https://pypi.org/project/pyIsEmail) | True (i.e. enabled) |

<!--configuration-end-->

# Usage

<!--usage-start-->
Add the following HTML where you want the contact button to appear:

```html+jinja
{% set params = {...} %}

<a class="btn btn-primary" data-module="modal-contact" data-module-template="{{ h.get_contact_form_template_url(params) }}" href="{{ h.url_for('contact.form', **params) }}" title="{{ _('Contact') }}">
    <i class="fas fa-envelope"></i>{{ link_text if link_text else _('CONTACT BUTTON TEXT') }}
</a>

{% asset 'ckanext-contact/main' %}
```

Where `params` is a dict with three entries: package_id, resource_id, record_id (all of which are optional).

<!--usage-end-->

# Testing

<!--testing-start-->
There is a Docker compose configuration available in this repository to make it easier to run tests. The ckan image uses the Dockerfile in the `docker/` folder.

To run the tests against ckan 2.9.x on Python3:

1. Build the required images:
   ```shell
   docker compose build
   ```

2. Then run the tests.
   The root of the repository is mounted into the ckan container as a volume by the Docker compose
   configuration, so you should only need to rebuild the ckan image if you change the extension's
   dependencies.
   ```shell
   docker compose run ckan
   ```

<!--testing-end-->

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "ckanext-contact",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "CKAN, data, contact",
    "author": null,
    "author_email": "Natural History Museum <data@nhm.ac.uk>",
    "download_url": "https://files.pythonhosted.org/packages/7f/eb/d093141257d440905e1195e2dd2d6456a57dccbe452eeeedfc4d1c944347/ckanext_contact-2.4.3.tar.gz",
    "platform": null,
    "description": "<!--header-start-->\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://data.nhm.ac.uk/images/nhm_logo.svg\">\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"https://data.nhm.ac.uk/images/nhm_logo_black.svg\">\n  <img alt=\"The Natural History Museum logo.\" src=\"https://data.nhm.ac.uk/images/nhm_logo_black.svg\" align=\"left\" width=\"150px\" height=\"100px\" hspace=\"40\">\n</picture>\n\n# ckanext-contact\n\n[![Tests](https://img.shields.io/github/actions/workflow/status/NaturalHistoryMuseum/ckanext-contact/tests.yml?style=flat-square)](https://github.com/NaturalHistoryMuseum/ckanext-contact/actions/workflows/tests.yml)\n[![Coveralls](https://img.shields.io/coveralls/github/NaturalHistoryMuseum/ckanext-contact/main?style=flat-square)](https://coveralls.io/github/NaturalHistoryMuseum/ckanext-contact)\n[![CKAN](https://img.shields.io/badge/ckan-2.9.7-orange.svg?style=flat-square)](https://github.com/ckan/ckan)\n[![Python](https://img.shields.io/badge/python-3.6%20%7C%203.7%20%7C%203.8-blue.svg?style=flat-square)](https://www.python.org/)\n[![Docs](https://img.shields.io/readthedocs/ckanext-contact?style=flat-square)](https://ckanext-contact.readthedocs.io)\n\n_A CKAN extension for adding popup contact forms to pages._\n\n<!--header-end-->\n\n# Overview\n\n<!--overview-start-->\nBorrows much of the contact form code from [ckanext-surrey](https://github.com/CityofSurrey/ckanext-surrey).\n\nAn example can be seen on the Natural History Museum's [Data Portal](https://data.nhm.ac.uk) when clicking \"_Contact dataset curator._\"\n\nThis extension now includes Google's [reCAPTCHA](https://www.google.com/recaptcha) for preventing spam submissions.\n\n<!--overview-end-->\n\n# Installation\n\n<!--installation-start-->\nPath variables used below:\n- `$INSTALL_FOLDER` (i.e. where CKAN is installed), e.g. `/usr/lib/ckan/default`\n- `$CONFIG_FILE`, e.g. `/etc/ckan/default/development.ini`\n\n## Installing from PyPI\n\n```shell\npip install ckanext-contact\n```\n\n## Installing from source\n\n1. Clone the repository into the `src` folder:\n   ```shell\n   cd $INSTALL_FOLDER/src\n   git clone https://github.com/NaturalHistoryMuseum/ckanext-contact.git\n   ```\n\n2. Activate the virtual env:\n   ```shell\n   . $INSTALL_FOLDER/bin/activate\n   ```\n\n3. Install via pip:\n   ```shell\n   pip install $INSTALL_FOLDER/src/ckanext-contact\n   ```\n\n### Installing in editable mode\n\nInstalling from a `pyproject.toml` in editable mode (i.e. `pip install -e`) requires `setuptools>=64`; however, CKAN 2.9 requires `setuptools==44.1.0`. See [our CKAN fork](https://github.com/NaturalHistoryMuseum/ckan) for a version of v2.9 that uses an updated setuptools if this functionality is something you need.\n\n## Post-install setup\n\n1. Add 'contact' to the list of plugins in your `$CONFIG_FILE`:\n   ```ini\n   ckan.plugins = ... contact\n   ```\n\n2. To use reCAPTCHA, you must register a site with the Google [reCAPTCHA](https://www.google.com/recaptcha) service and add your API key and secret in the [configuration](#configuration).\n\n<!--installation-end-->\n\n# Configuration\n\n<!--configuration-start-->\nThese are the options that can be specified in your .ini config file.\n\n## Email\n\n| Name                                       | Description                                       | Default                         |\n|--------------------------------------------|---------------------------------------------------|---------------------------------|\n| `ckanext.contact.mail_to`                  | Email address to submit to                        | `email_to`                      |\n| `ckanext.contact.recipient_name`           | Name of the recipient                             | `ckan.site_title`               |\n| `ckanext.contact.subject`                  | Email subject for the submitted form              | 'Contact/Question from visitor' |\n| `ckanext.contact.add_timestamp_to_subject` | Whether to append a timestamp to the subject line | `false`                         |\n| `ckanext.contact.subject_prefix`           | A prefix to add to the subject before sending     | ''                              |\n\n## Recaptcha\n\n| Name                                  | Description                              | Default               |\n|---------------------------------------|------------------------------------------|-----------------------|\n| `ckanext.contact.recaptcha_v3_key`    | API key for the reCAPTCHA service.       | False (i.e. disabled) |\n| `ckanext.contact.recaptcha_v3_secret` | API secret for the reCAPTCHA service.    | False (i.e. disabled) |\n| `ckanext.contact.recaptcha_v3_action` | `data-module-action` for the form/button |                       |\n\n## Other\n\n| Name                          | Description                                                                                          | Default             |\n|-------------------------------|------------------------------------------------------------------------------------------------------|---------------------|\n| `ckanext.contact.check_email` | Set to False to disable checking email addresses via [pyIsEmail](https://pypi.org/project/pyIsEmail) | True (i.e. enabled) |\n\n<!--configuration-end-->\n\n# Usage\n\n<!--usage-start-->\nAdd the following HTML where you want the contact button to appear:\n\n```html+jinja\n{% set params = {...} %}\n\n<a class=\"btn btn-primary\" data-module=\"modal-contact\" data-module-template=\"{{ h.get_contact_form_template_url(params) }}\" href=\"{{ h.url_for('contact.form', **params) }}\" title=\"{{ _('Contact') }}\">\n    <i class=\"fas fa-envelope\"></i>{{ link_text if link_text else _('CONTACT BUTTON TEXT') }}\n</a>\n\n{% asset 'ckanext-contact/main' %}\n```\n\nWhere `params` is a dict with three entries: package_id, resource_id, record_id (all of which are optional).\n\n<!--usage-end-->\n\n# Testing\n\n<!--testing-start-->\nThere is a Docker compose configuration available in this repository to make it easier to run tests. The ckan image uses the Dockerfile in the `docker/` folder.\n\nTo run the tests against ckan 2.9.x on Python3:\n\n1. Build the required images:\n   ```shell\n   docker compose build\n   ```\n\n2. Then run the tests.\n   The root of the repository is mounted into the ckan container as a volume by the Docker compose\n   configuration, so you should only need to rebuild the ckan image if you change the extension's\n   dependencies.\n   ```shell\n   docker compose run ckan\n   ```\n\n<!--testing-end-->\n",
    "bugtrack_url": null,
    "license": "GPL-3.0-or-later",
    "summary": "A CKAN extension for adding popup contact forms to pages.",
    "version": "2.4.3",
    "project_urls": {
        "changelog": "https://github.com/NaturalHistoryMuseum/ckanext-contact/blob/main/CHANGELOG.md",
        "repository": "https://github.com/NaturalHistoryMuseum/ckanext-contact"
    },
    "split_keywords": [
        "ckan",
        " data",
        " contact"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a10459d6352eae3ede04639600fd24b9879e796137cf178f0d0a4e1998d76ca1",
                "md5": "1167889633a80428cf7617f85440ca6e",
                "sha256": "4b2276206a2f9b20c63604fb0dd984349befd9adf0fb5303883767ef5ec2e0d1"
            },
            "downloads": -1,
            "filename": "ckanext_contact-2.4.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1167889633a80428cf7617f85440ca6e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 34002,
            "upload_time": "2024-11-04T11:36:47",
            "upload_time_iso_8601": "2024-11-04T11:36:47.291908Z",
            "url": "https://files.pythonhosted.org/packages/a1/04/59d6352eae3ede04639600fd24b9879e796137cf178f0d0a4e1998d76ca1/ckanext_contact-2.4.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7febd093141257d440905e1195e2dd2d6456a57dccbe452eeeedfc4d1c944347",
                "md5": "dd7cfe9c81a884b8705674f13c4331a6",
                "sha256": "87b3dd45347ba5bf9cf10d95f1a02e8606120de5fa315c36a54116ba74c366d1"
            },
            "downloads": -1,
            "filename": "ckanext_contact-2.4.3.tar.gz",
            "has_sig": false,
            "md5_digest": "dd7cfe9c81a884b8705674f13c4331a6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 30570,
            "upload_time": "2024-11-04T11:36:48",
            "upload_time_iso_8601": "2024-11-04T11:36:48.895762Z",
            "url": "https://files.pythonhosted.org/packages/7f/eb/d093141257d440905e1195e2dd2d6456a57dccbe452eeeedfc4d1c944347/ckanext_contact-2.4.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-04 11:36:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "NaturalHistoryMuseum",
    "github_project": "ckanext-contact",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "lcname": "ckanext-contact"
}
        
Elapsed time: 0.72978s