# Cookiecutter Open edX Plugin
[![Source code](https://img.shields.io/static/v1?logo=github&label=Git&style=flat-square&color=brightgreen&message=Source%20code)](https://github.com/cookiecutter-openedx/cookiecutter-openedx-plugin)
[![Forums](https://img.shields.io/static/v1?logo=discourse&label=Forums&style=flat-square&color=000000&message=discuss.openedx.org)](https://discuss.openedx.org/tag/cookiecutter)
[![Documentation](https://img.shields.io/static/v1?&label=Documentation&style=flat-square&color=000000&message=Documentation)](https://github.com/cookiecutter-openedx/cookiecutter-openedx-plugin)
[![PyPI releases](https://img.shields.io/pypi/v/cookiecutter-openedx-plugin?logo=python&logoColor=white)](https://pypi.org/project/cookiecutter-openedx-plugin)
[![AGPL License](https://img.shields.io/github/license/overhangio/tutor.svg?style=flat-square)](https://www.gnu.org/licenses/agpl-3.0.en.html)
[![hack.d Lawrence McDaniel](https://img.shields.io/badge/hack.d-Lawrence%20McDaniel-orange.svg)](https://lawrencemcdaniel.com)
An [Open edX Plugin](https://blog.lawrencemcdaniel.com/getting-started-with-open-edx-plugin-architecture/) that implements customizations for deployment to [Kubernetes](https://kubernetes.io/). Implements the following:
- Hooks for openedx Django Signals for 'user_logged_in', 'user_logged_out', 'register_user', 'course_enrollment_created', 'certificate_created' and more. Demonstrates both the legacy, and the newer methodology for subscribing to and listening for the signals.
- Scaffolding for waffle flag setup, including Django model initializations. These are currently only used to enable Django Signals.
- A [custom badges backend](https://github.com/openedx/edx-platform/tree/master/lms/djangoapps/badges/backends) that is compatible with [django-storages backend for Amazon S3](https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html)
## Getting Started
### Install using Tutor
See [Installing extra xblocks and requirements](https://docs.tutor.overhang.io/configuration.html)
```bash
tutor config save # to ensure that tutor's root folder system has been created
# OPTION 1: install as a PyPi package
echo "cookiecutter-openedx-plugin>=0.1.3" >> "$(tutor config printroot)/env/build/openedx/requirements/private.txt"
# OPTION 2: install as an editable requirement
echo "-e git+https://github.com/cookiecutter-openedx/cookiecutter-openedx-plugin.git" >> "$(tutor config printroot)/env/build/openedx/requirements/private.txt"
cat "$(tutor config printroot)/env/build/openedx/requirements/private.txt"
tutor images build openedx
tutor local quickstart
```
### Install using Cookiecutter Github Actions Workflow
Add the following to your [Cookiecutter Github Actions Build workflow](https://github.com/cookiecutter-openedx/cookiecutter-openedx-devops/blob/main/%7B%7Bcookiecutter.github_repo_name%7D%7D/.github/workflows/build-openedx.yml)
```yaml
- name: Add cookiecutter-openedx-plugin
uses: openedx-actions/tutor-plugin-build-openedx-add-requirement
with:
pip-package: cookiecutter-openedx-plugin
pip-package-version: "0.1.3"
```
### Documentation
Documentation is available here: [Documentation](https://github.com/cookiecutter-openedx/cookiecutter-openedx-plugin)
### Support
To get community support, go to the official Open edX discussion forum: [https://discuss.openedx.org](https://discuss.openedx.org).
### Contributing
We welcome contributions! cookiecutter-openedx-plugin is part of the [cookiecutter-openedx](https://github.com/cookiecutter-openedx) project. Pull requests are welcome in all repos belonging to this organization. You can also contact [Lawrence McDaniel](https://lawrencemcdaniel.com/contact) directly.
### Getting Started With Local development
- Use the same virtual environment that you use for edx-platform
- Ensure that your Python interpreter to 3.8x
- install black: <https://pypi.org/project/black/>
- install flake8: <https://flake8.pycqa.org/en/latest/>
- install flake8-coding: <https://pypi.org/project/flake8-coding/>
```bash
# Run these from within your edx-platform virtual environment
python3 -m venv venv
source venv/bin/activate
cd /path/to/edx-platform
pip install -r requirements/edx/base.txt
pip install -r requirements/edx/coverage.txt
pip install -r requirements/edx/development.txt
pip install -r requirements/edx/pip-tools.txt
pip install -r requirements/edx/testing.txt
pip install -r requirements/edx/doc.txt
pip install -r requirements/edx/paver.txt
pip install pre-commit black flake8
pre-commit install
```
#### Local development good practices
- run `black` on modified code before committing.
- run `flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics`
- run `flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics`
- run `pre-commit run --all-files` before pushing. see: <https://pre-commit.com/>
#### edx-platform dependencies
To avoid freaky version conflicts in prod it's a good idea to install all of the edx-platform requirements to your local dev virtual environment.
- requirements/edx/base.txt
- requirements/edx/develop.txt,
- requirements/edx/testing.txt
At a minimum this will give you the full benefit of your IDE's linter.
Raw data
{
"_id": null,
"home_page": "https://github.com/cookiecutter-openedx/cookiecutter-openedx-plugin",
"name": "cookiecutter-openedx-plugin",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "Python,Django,Open edX,Plugin",
"author": "Lawrence McDaniel",
"author_email": "Lawrence McDaniel <lpm0073@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/c9/83/b26e9d01b4ee7949682638f706b40e61a9a9963a330ea754fe8fd7ded745/cookiecutter-openedx-plugin-0.1.3.tar.gz",
"platform": null,
"description": "# Cookiecutter Open edX Plugin\n\n[![Source code](https://img.shields.io/static/v1?logo=github&label=Git&style=flat-square&color=brightgreen&message=Source%20code)](https://github.com/cookiecutter-openedx/cookiecutter-openedx-plugin)\n[![Forums](https://img.shields.io/static/v1?logo=discourse&label=Forums&style=flat-square&color=000000&message=discuss.openedx.org)](https://discuss.openedx.org/tag/cookiecutter)\n[![Documentation](https://img.shields.io/static/v1?&label=Documentation&style=flat-square&color=000000&message=Documentation)](https://github.com/cookiecutter-openedx/cookiecutter-openedx-plugin)\n[![PyPI releases](https://img.shields.io/pypi/v/cookiecutter-openedx-plugin?logo=python&logoColor=white)](https://pypi.org/project/cookiecutter-openedx-plugin)\n[![AGPL License](https://img.shields.io/github/license/overhangio/tutor.svg?style=flat-square)](https://www.gnu.org/licenses/agpl-3.0.en.html)\n[![hack.d Lawrence McDaniel](https://img.shields.io/badge/hack.d-Lawrence%20McDaniel-orange.svg)](https://lawrencemcdaniel.com)\n\nAn [Open edX Plugin](https://blog.lawrencemcdaniel.com/getting-started-with-open-edx-plugin-architecture/) that implements customizations for deployment to [Kubernetes](https://kubernetes.io/). Implements the following:\n\n- Hooks for openedx Django Signals for 'user_logged_in', 'user_logged_out', 'register_user', 'course_enrollment_created', 'certificate_created' and more. Demonstrates both the legacy, and the newer methodology for subscribing to and listening for the signals.\n- Scaffolding for waffle flag setup, including Django model initializations. These are currently only used to enable Django Signals.\n- A [custom badges backend](https://github.com/openedx/edx-platform/tree/master/lms/djangoapps/badges/backends) that is compatible with [django-storages backend for Amazon S3](https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html)\n\n## Getting Started\n\n### Install using Tutor\n\nSee [Installing extra xblocks and requirements](https://docs.tutor.overhang.io/configuration.html)\n\n```bash\ntutor config save # to ensure that tutor's root folder system has been created\n\n# OPTION 1: install as a PyPi package\necho \"cookiecutter-openedx-plugin>=0.1.3\" >> \"$(tutor config printroot)/env/build/openedx/requirements/private.txt\"\n\n# OPTION 2: install as an editable requirement\necho \"-e git+https://github.com/cookiecutter-openedx/cookiecutter-openedx-plugin.git\" >> \"$(tutor config printroot)/env/build/openedx/requirements/private.txt\"\n\ncat \"$(tutor config printroot)/env/build/openedx/requirements/private.txt\"\ntutor images build openedx\ntutor local quickstart\n```\n\n### Install using Cookiecutter Github Actions Workflow\n\nAdd the following to your [Cookiecutter Github Actions Build workflow](https://github.com/cookiecutter-openedx/cookiecutter-openedx-devops/blob/main/%7B%7Bcookiecutter.github_repo_name%7D%7D/.github/workflows/build-openedx.yml)\n\n```yaml\n - name: Add cookiecutter-openedx-plugin\n uses: openedx-actions/tutor-plugin-build-openedx-add-requirement\n with:\n pip-package: cookiecutter-openedx-plugin\n pip-package-version: \"0.1.3\"\n```\n\n### Documentation\n\nDocumentation is available here: [Documentation](https://github.com/cookiecutter-openedx/cookiecutter-openedx-plugin)\n\n### Support\n\nTo get community support, go to the official Open edX discussion forum: [https://discuss.openedx.org](https://discuss.openedx.org).\n\n### Contributing\n\nWe welcome contributions! cookiecutter-openedx-plugin is part of the [cookiecutter-openedx](https://github.com/cookiecutter-openedx) project. Pull requests are welcome in all repos belonging to this organization. You can also contact [Lawrence McDaniel](https://lawrencemcdaniel.com/contact) directly.\n\n### Getting Started With Local development\n\n- Use the same virtual environment that you use for edx-platform\n- Ensure that your Python interpreter to 3.8x\n- install black: <https://pypi.org/project/black/>\n- install flake8: <https://flake8.pycqa.org/en/latest/>\n- install flake8-coding: <https://pypi.org/project/flake8-coding/>\n\n```bash\n# Run these from within your edx-platform virtual environment\npython3 -m venv venv\nsource venv/bin/activate\n\ncd /path/to/edx-platform\npip install -r requirements/edx/base.txt\npip install -r requirements/edx/coverage.txt\npip install -r requirements/edx/development.txt\npip install -r requirements/edx/pip-tools.txt\npip install -r requirements/edx/testing.txt\npip install -r requirements/edx/doc.txt\npip install -r requirements/edx/paver.txt\n\npip install pre-commit black flake8\npre-commit install\n```\n\n#### Local development good practices\n\n- run `black` on modified code before committing.\n- run `flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics`\n- run `flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics`\n- run `pre-commit run --all-files` before pushing. see: <https://pre-commit.com/>\n\n#### edx-platform dependencies\n\nTo avoid freaky version conflicts in prod it's a good idea to install all of the edx-platform requirements to your local dev virtual environment.\n\n- requirements/edx/base.txt\n- requirements/edx/develop.txt,\n- requirements/edx/testing.txt\n\nAt a minimum this will give you the full benefit of your IDE's linter.\n",
"bugtrack_url": null,
"license": "AGPLv3",
"summary": "An open edx plugin that implements customizations for deployment to Kubernetes",
"version": "0.1.3",
"split_keywords": [
"python",
"django",
"open edx",
"plugin"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "aa0c8c346d06865d0e3a4a3c57aec4d0e0dfbc0a625d6a09762be6f6dc3b5356",
"md5": "088e525150eb97634677b554dd578b1a",
"sha256": "55ad6d5fc7c8fc93da5f97e5368869e35f5322bc93994f311986a5cb2ce7cb55"
},
"downloads": -1,
"filename": "cookiecutter_openedx_plugin-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "088e525150eb97634677b554dd578b1a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 28398,
"upload_time": "2023-04-10T18:09:22",
"upload_time_iso_8601": "2023-04-10T18:09:22.274503Z",
"url": "https://files.pythonhosted.org/packages/aa/0c/8c346d06865d0e3a4a3c57aec4d0e0dfbc0a625d6a09762be6f6dc3b5356/cookiecutter_openedx_plugin-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c983b26e9d01b4ee7949682638f706b40e61a9a9963a330ea754fe8fd7ded745",
"md5": "351f7659eb3dfc61f34b73d04124df6b",
"sha256": "e1e84ee99b3d6759b258ec6907e844ed6e061986c488d55478f4a3a0baa52963"
},
"downloads": -1,
"filename": "cookiecutter-openedx-plugin-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "351f7659eb3dfc61f34b73d04124df6b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 26873,
"upload_time": "2023-04-10T18:09:23",
"upload_time_iso_8601": "2023-04-10T18:09:23.771841Z",
"url": "https://files.pythonhosted.org/packages/c9/83/b26e9d01b4ee7949682638f706b40e61a9a9963a330ea754fe8fd7ded745/cookiecutter-openedx-plugin-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-10 18:09:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "cookiecutter-openedx",
"github_project": "cookiecutter-openedx-plugin",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "cookiecutter-openedx-plugin"
}