Skip to main content

Upload packages to CKAN via Email

Project description

# ckanext-upload_via_email

Upload packages to CKAN via Email

Minimal supported CKAN version: 2.8.1

## Installation

* Install [ckanext-datapackage_pipelines](https://github.com/OriHoch/ckanext-datapackage_pipelines) extension
* Install the ckanext-upload_via_email package into your CKAN virtual environment:
* `pip install ckanext-upload_via_email`
* Add ``upload_via_email`` to the ``ckan.plugins`` setting in your CKAN
* Restart CKAN
* Restart the CKAN pipelines server

## Configuration

* Generate a Gmail API credentials file
* See [here](https://developers.google.com/gmail/api/quickstart/python)
* Generate a Gmail API token file, authorize with the Gmail user which will receive the emails
* `sudo pip3 install -r ckanext/pipelines/requirements.txt`
* `CREDENTIALS=/path/to/credentials_file bin/generate_ckan_config.py`
* Add the output config to your CKAN configuration (be sure to keep it secret)
* Add the following configurations as well:
```
ckanext.upload_via_email.allowed_senders_resource_id = ckan_resource_id_containing_allowed_senders_file
ckanext.upload_via_email.success_message = The dataset is available at {dataset_url}
ckanext.upload_via_email.success_message_from_email = do-not-reply@void.void
ckanext.upload_via_email.success_message_subject = Your dataset was created successfully
```

## Allowed senders file

The allowed senders file should be uploaded to CKAN as a private dataset with only 1 resource.
The resource should contain an xlsx file with the following columns:

* **from_address**: email address sender is allowed to send from
* **to_address**: email address sender is allowed to send to
* **organization_id**: id of sender's organization

## Updating the package on PYPI

Update the version in `VERSION.txt`, then build and upload:

```
python setup.py sdist &&\
twine upload dist/ckanext-upload_via_email-$(cat VERSION.txt).tar.gz
```

ckanext-upload_via_email should be availabe on PyPI as https://pypi-hypernode.com/pypi/ckanext-upload_via_email.

## Developing the pipelines

The pipelines are defined in [ckanext/pipelines/pipeline-spec.yaml](ckanext/pipelines/pipeline-spec.yaml) using the [datapackage-pipelines](https://github.com/frictionlessdata/datapackage-pipelines) framework. All `.py` files under the `ckanext/pipelines` directory run on the CKAN pipelines server which uses Python 3.6.

* Start the CKAN server
* Start a Python 3.6 virtualenv
* `pipenv shell`
* Clone the ckanext-datapackage_pipelines and install the requirements
* `pip install -Ur ../ckanext-datapackage_pipelines/datapackage_pipelines_ckanext/requirements.txt`
* `pip install -e ../ckanext-datapackage_pipelines/datapackage_pipelines_ckanext`
* Install the upload via email requirements
* `pip install -r ckanext/pipelines/requirements.txt`
* Change to the pipelines directory and run dpp
* `cd ckanext/pipelines`
* `dpp`

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ckanext-upload_via_email-0.0.3.tar.gz (21.0 kB view details)

Uploaded Source

File details

Details for the file ckanext-upload_via_email-0.0.3.tar.gz.

File metadata

  • Download URL: ckanext-upload_via_email-0.0.3.tar.gz
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/38.4.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3

File hashes

Hashes for ckanext-upload_via_email-0.0.3.tar.gz
Algorithm Hash digest
SHA256 11dd4419cfaa3698598810240e394c90d44dfc1ddd373067637d8cb9e4985013
MD5 2642746fd0fe1030c01f9bf12fce1f92
BLAKE2b-256 05463d0b1d3e04b5d0f8de5e1a02e7a82358a6b677538f9fa7c3c8c2cb129d71

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page